Когда вы вызываете 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
Таким образом, кнопка остается логически в макете (и занимает соответствующее место), но он не отображается, потому что он полностью отображается с прозрачным цветом.
Что значит «все еще работать». Как (кодовым) вы хотите взаимодействовать с ними, пока они невидимы? И что вы имеете в виду, «ничего не меняется». Что вы надеетесь, 'setEnabled()' делает? Опишите, на что вы надеетесь, без использования слова «включить» или «отключить». Не пытаясь быть злым или больным, просто пытаясь понять, чего вы ожидаете и просите! =) –
Я хочу, чтобы кнопка была полезной, я думаю. Вы нажимаете на него, и все происходит. Я имел в виду «ничего не изменилось», поскольку кнопки все еще непригодны для использования. – mrg95