为QPushButton的4种状态设置样式表

时间:2017-06-01 06:34:06

标签: css qt stylesheet qpushbutton

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个州?

0 个答案:

没有答案