Я хотел знать, правильна ли приведенная ниже таблица стилей или нет или какая ошибка. Она не меняет пользовательский интерфейс, даже если я установлен.Установить стиль для дочернего виджета на основе родительского виджета Property Selector - qt
QWidget#itemScrollAreaWidgetContents PosButton[pressed = "false"] QFrame#baseWidget
{
border: 1px solid black;
border-top-width: 0;
border-left-width: 0;
border-style: outset;
}
QWidget#itemScrollAreaWidgetContents PosButton[pressed = "true"] QFrame#baseWidget
{
border: 1px solid black;
border-top-width: 0;
border-left-width: 0;
border-style: outset;
}
Мой пользовательский виджет PosButton имеет набор свойств
Q_PROPERTY(QString pressed READ pressed WRITE setPressed)
меняю недвижимость на Mouseclick
void PosButton::mouseReleaseEvent(QMouseEvent *event)
{
qDebug() << Q_FUNC_INFO << "Invoked";
if(rect().contains(event->pos()))
{
qDebug() << Q_FUNC_INFO << "Emit click";
emit clicked(this->objectName());
}
setPressed("false");
style()->unpolish(this);
style()->polish(this);
qDebug() << Q_FUNC_INFO << "Exits";
return;
}
void PosButton::mousePressEvent(QMouseEvent *event)
{
qDebug() << Q_FUNC_INFO << "Invoked";
Q_UNUSED(event);
setPressed("true");
style()->unpolish(this);
style()->polish(this);
qDebug() << Q_FUNC_INFO << "Exits";
return;
}
Кроме того, я попытался установить таблицу стилей. Он активируется, но занимает второе место для обновления в пользовательском интерфейсе. то есть, мне нужно держать мой виджет нажатой в течение секунды для изменения появляются
void PosButton::mouseReleaseEvent(QMouseEvent *event)
{
qDebug() << Q_FUNC_INFO << "Invoked";
if(rect().contains(event->pos()))
{
qDebug() << Q_FUNC_INFO << "Emit click";
emit clicked(this->objectName());
}
m_pBaseWidget->setStyleSheet("QFrame#baseWidget {"
"border: 1px solid black;"
"border-top-width: 0;"
"border-left-width: 0;"
"border-style: outset;}"
);
qDebug() << Q_FUNC_INFO << "Exits";
return;
}
void PosButton::mousePressEvent(QMouseEvent *event)
{
qDebug() << Q_FUNC_INFO << "Invoked";
Q_UNUSED(event);
m_pBaseWidget->setStyleSheet("QFrame#baseWidget {"
"border: 2px solid orange;"
"border-top-width: 0;"
"border-left-width: 0;"
"border-style: outset;}"
);
qDebug() << Q_FUNC_INFO << "Exits";
return;
}
Является '' PosButton' QPushButton' производного класса? – Iuliu
Нет, это происходит из QWidget – Abin