6

在我的项目中,我有一些按钮可以在可见和不可见之间切换:

ui->button->setVisible(true);
//or
ui->button->setVisible(false);

但是,似乎当它们隐形时,它们也不起作用?我怎样才能解决这个问题?

我已经尝试过这个:

ui->button->setEnabled(true);

对于他们所有人,但没有任何改变。

4

3 回答 3

10

当您调用 时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

这样,按钮仍然在布局中逻辑上(并占用适当的空间),但它不会显示,因为它完全以透明颜色显示。

于 2013-07-15T01:35:22.333 回答
3

setVisible()设置按钮是否可见,将其从小部件的布局中完全删除。 setEnabled()设置按钮是否被禁用(灰显)。

如果您希望它可用,但不能在视觉上呈现,请尝试使用将按钮设置为平面pushButton->setFlat(true)。这使按钮文本可见,但按钮背景在按下之前不可见(试试看我的意思)。如果您也想隐藏文本,您可以使用 . 将文本设置为空pushButton->setText("")

于 2013-07-15T03:58:19.920 回答
0

使按钮不可见的另一种方法是:

ui->errorMask->setStyleSheet("QPushButton { background-color: rgba(10, 0, 0, 0); }");
于 2019-03-20T19:58:10.763 回答