C++ 使QPushButton不可见但仍能工作?

C++ 使QPushButton不可见但仍能工作?,c++,qt,qpushbutton,C++,Qt,Qpushbutton,在我的项目中,我有一些按钮可以使用以下方法在可见和不可见之间切换: ui->button->setVisible(true); //or ui->button->setVisible(false); 然而,似乎当它们看不见时,它们也不起作用?我怎样才能避开这件事 我已经试过了: ui->button->setEnabled(true); 当你调用QWidget::setVisible(false)时,你不仅可以从视图中隐藏它,而且可以从布局中逻辑地删除它,

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

ui->button->setVisible(true);
//or
ui->button->setVisible(false);
然而,似乎当它们看不见时,它们也不起作用?我怎样才能避开这件事

我已经试过了:

ui->button->setEnabled(true);

当你调用
QWidget::setVisible(false)
时,你不仅可以从视图中隐藏它,而且可以从布局中逻辑地删除它,这样它就不再是用来响应按键或鼠标点击的了。您想要的是在不显示小部件的情况下将其保留在那里。在您的情况下,我会尝试更改与您的
QPushButton
关联的
qpalete
,使其透明(即不可见)

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

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

如果您希望它可用,但不显示在视觉上,请尝试将按钮设置为使用
button->setFlat(true)

这使得按钮文本可见,但按钮背景在按下之前不可见(试试看,看看我的意思)。如果您也希望隐藏文本,可以使用
按钮->设置文本(“”
)将文本设置为“无”,另一种使按钮不可见的方法是:

ui->errorMask->setStyleSheet("QPushButton { background-color: rgba(10, 0, 0, 0); }");

“还在工作”是什么意思。在它们不可见的情况下,您希望如何(在代码方面)与它们交互?“什么都不改变”是什么意思。您希望“setEnabled()”做什么?描述你希望它做什么,不要使用“启用”或“禁用”这个词。不想表现得尖刻或痛苦,只想理解你的期望和要求!=)我想这个按钮应该是可用的。你点击它,事情就发生了。我的意思是“没有任何变化”,因为在中,按钮仍然无法使用。这是一个伟大的建议,可以动态隐藏设计元素,而不会自动更改布局!(这在Qt4中根本不可能)。谢谢你的主意!
ui->errorMask->setStyleSheet("QPushButton { background-color: rgba(10, 0, 0, 0); }");