在我的项目中,我有一些按钮可以在可见和不可见之间切换:
ui->button->setVisible(true);
//or
ui->button->setVisible(false);
但是,似乎当它们隐形时,它们也不起作用?我怎样才能解决这个问题?
我已经尝试过这个:
ui->button->setEnabled(true);
对于他们所有人,但没有任何改变。
在我的项目中,我有一些按钮可以在可见和不可见之间切换:
ui->button->setVisible(true);
//or
ui->button->setVisible(false);
但是,似乎当它们隐形时,它们也不起作用?我怎样才能解决这个问题?
我已经尝试过这个:
ui->button->setEnabled(true);
对于他们所有人,但没有任何改变。
当您调用 时QWidget::setVisible(false)
,您不仅将其从视图中隐藏,而且还从逻辑上将其从布局中移除,因此它不再响应按键或鼠标点击。您想要的是将小部件保留在那里而不显示它。在您的情况下,我会尝试更改QPalette
与您的关联QPushButton
以使其透明(即不可见)
// Make the button "invisible"
QBrush tb(Qt::transparent); // Transparent brush, solid pattern
ui->button->setPalette(QPalette(tb, tb, tb, tb, tb, tb, tb, tb, tb)); // Set every color roles to the transparent brush
// Make the button "visible"
ui->button->setPalette(QPalette()); // Back to the default palette
这样,按钮仍然在布局中逻辑上(并占用适当的空间),但它不会显示,因为它完全以透明颜色显示。
setVisible()
设置按钮是否可见,将其从小部件的布局中完全删除。
setEnabled()
设置按钮是否被禁用(灰显)。
如果您希望它可用,但不能在视觉上呈现,请尝试使用将按钮设置为平面pushButton->setFlat(true)
。这使按钮文本可见,但按钮背景在按下之前不可见(试试看我的意思)。如果您也想隐藏文本,您可以使用 . 将文本设置为空pushButton->setText("")
。
使按钮不可见的另一种方法是:
ui->errorMask->setStyleSheet("QPushButton { background-color: rgba(10, 0, 0, 0); }");