前言
在软件开发过程中增加了很多辅助的控件,贸然删除可能会出现意想不到的错误,希望将其隐藏,不出现在界面上。
qt隐藏控件没有MFC那么方便,需要使用QWidget类的setVisible方法,使用代码方式实现,不能从ui设计界面进行设置(如果有一定要私信我哈)。
实现方式
单独将某一个控件(例如其objectName = testName),直接在主视窗类的成员函数中使用如下语句即可。
ui->testName->setVisible(false);
当需要隐藏的控件较多时,每一个控件都写一行代码太过繁琐。注意到这些控件都是QWidget类的子类,且setVisible是QWidget类的方法,所以将这些控件的指针都变成QWidget对象指针,再调用setVisible即可实现批量隐藏控件。
例如我想隐藏以下蓝色框内所有控件,包括三种类型控件。
在主视窗构造函数中隐藏这些控件,这样在我们看到界面之前这些控件就被隐藏了。批量隐藏的技巧在于将所有需要隐藏的控件的指针都转换为QWidget指针。
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
{
QWidget* hide[] = {ui->radioButton, ui->radioButton_2,
ui->radioButton_3, ui->radioButton_4,
ui->label_2, ui->pBtnGit};
for(int i = 0; i < sizeof(hide)/sizeof(QWidget*); i++){
hide[i]->setVisible(false);
}
}
}
运行效果如下: