Consistency is the only major suggestion I can give you, it sounds like you have a child with an authority problem rather than a raiding problem. My 5 yr old is VERY well behaved, he has his moments of course, but he knows that he CANNOT have anything without asking, and that he gets spanked or time out otherwise. He has problems with frustration, but other than that he's pretty good. The main thing is that I follow through with my 'threats'....if I say he's gonna go to bed for not listening, he goes STRAIGHT to bed, no if's and's or but's about it. The other thing is: if I say no, and he asks Daddy, he gets in trouble. And vice versa. Congratulations for not letting her get away with stuff!!! I was impressed when you said that she either eats or goes without, because there are A LOT of parents who will give in. For instance, my friend's daughter throws screaming tantrums when she has to eat vegetables, and gets in her mother's face. Most of the time she gets away with it, which I cannot stand!!! Kids will be kids, but you gotta draw the line somewhere before they start walking all over you.  Whining is a major no-no. If you whine in my house you don't get ANYTHING, including food, until you stop whining. I'm not going to serve little brats in my house, PERIOD. You should sit down with your hubby and discuss parenting, because if your daughter knows that you 2 aren't in complete agreement she will play the both of you against each other. Trust me, I've seen it done and I remember doing it. I could get away with anything if I convinced my mom to be mad at my dad for how he handled something. Don't be afraid to spank. There's a major line between discipline and abuse, and there is no way a loving parent can abuse their children. It's just not something we can do. You can tell when something gets to your child, you know if you need a paddle or your hand, etc. If she doesn't understand why she's getting punished (which I think she may, 4 yr olds are smarter than people think) I would suggest asking her why she's in trouble, if she doesn't know, explain, then ask her to repeat it back to you. That way you know she's listening. It may work to give her a little less of a punishment if she can admit what she's done wrong. If I may, I'd like to give one more little bit of advice: NO DRUGS. Almost every child you encounter will be diagnosed with ADD or ADHD, and the point of the drugs is not to help the kid but to make the parents' and teachers' lives easier. Patience (hah! LOL!) and a firm hand is all it takes. My son is severely ADHD, and yet he has learned to obey. Time out is awesome, spankings when necessary, as well as cooking bland meals for just the child (while you eat steak) and no dessert. Please keep in mind that mood/mind altering drugs can lead to drug dependency, addiction, and personality disorders, among other things. One child I knew had been on Adderal for about 5 yrs, and became suicidal once taken off of it. I can't even count the bad experiences I've known people to have on Ritalin!!! Sorry this is long!! Good luck!!!
P.S. Enforce everything you do with love, and she'll get the idea. Kids need to know (of course you know this) that they're loved, even when being disciplined. I can't count how many times my son has cried in my arms after I've spanked him, and then he actually apologizes for what he's done wrong!!! All by himself, I didn't tell him to say it, he learned it. And, above all else, he knows that he's loved.