4个州是:悬停,离开,focusIn,focusOut。
我现在正在做的是创建一个新类(MyButton)并推广QPushButton。
mybutton.cpp:
void MyButton::enterEvent(QEvent* e) {
emit hovered();
}
void MyButton::leaveEvent(QEvent* e) {
emit leaved();
}
void MyButton::focusInEvent(QFocusEvent* e) {
emit focused();
}
void MyButton::focusOutEvent(QFocusEvent* e) {
emit notfocused();
}
main.cpp中:
connect(ui.button, SIGNAL(hovered()), this, SLOT(button_hover()));
connect(ui.button, SIGNAL(focused()), this, SLOT(button_focus()));
connect(ui.button, SIGNAL(leaved()), this, SLOT(button_leave()));
connect(ui.button, SIGNAL(notfocused()), this, SLOT(button_notfocus()));
void MyWindow::button_hover() {
this->ui.button->setStyleSheet("border-image:url(:/ptd/graphics/button_mouseover.png);");
}
void MyWindow::button_focus() {
this->ui.button->setStyleSheet("border-image:url(:/ptd/graphics/button_mouseover.png);");
}
void MyWindow::button_leave() {
this->ui.button->setStyleSheet("border-image:url(:/ptd/graphics/button_leave.png);");
}
void MyWindow::button_notfocus() {
this->ui.button->setStyleSheet("border-image:url(:/ptd/graphics/button_leave.png);");
}
我认为这太长了。我想做的是:
ui.button->setObjectName("Yes");
ui.button->setStyleSheet("QPushButton#Yes{border-image: url(:/ptd/graphics/button_leave.png);}"
"QPushButton#Yes:hover{border-image: url(:/ptd/graphics/button_mouseover.png);}");
更短,我们不必创建新类。但在这种情况下我只知道状态hover
。如何设置其他3个州?