Maybe stop smacking her? That's all that stood out to me in your post, and I hope you take this the right way, but she see's you hitting her when she does something you don't like so in her mind wouldn't she think it's ok for her to hit people when they do something she doesn't like? I know people have very different views with smacking or not smacking but those are just my thoughts. In our house no one is allowed to hit anyone else so then it's not confusing for DD's. No one is allowed to hit no matter what. That doesn't mean they don't though! lol. So when they get frustrated and hit I just draw attention to what they have done and how it hurt the other person. So I will say 'DD, we don't hit people, hitting hurts, poor DD2, she's crying now because it hurt her when you hit her. What should you have done instead when you felt frustrated?' And I actually find that's enough usually. I actually try not to rely on punishment at all because I find it doesn't work. It only makes them try not to get caught or not do something to avoid getting punished, when I really want her not to do it because it's wrong and hurts people. So that's what I'm trying to teach her anyway.
That's pretty much the same as in our house. We don't use smacking for the same belief. I do sometimes use time out for my 3y3mth old in order to remove him from a situation. For example, if he is angry/frustrated and lashing out at his sisters I will take him to his bedroom so that he has a moment to calm down and it also takes him away from his sisters so he can't hurt them anymore. I don't lock the door (it doesn't have a lock even if I wanted to lol) and tell him that when he is calm and ready to play nicely with his sisters he can come out. He generally comes out a couple of minutes later in a completely different mood. Not always though, lol.