[QT4]动态对话框和Qt设计师

来源:互联网 发布:mac os 安全模式 编辑:程序博客网 时间:2024/06/09 15:27

在对一个窗口进行操作的时候,经常需要打开其他窗口

其实用Qt设计师和QUiLoader就可以很简单的实现这个功能,下面以一个例子简单介绍一下:


1、新建一个窗口,窗口具有两个PushButton,New按钮可以新建一个窗口,Ok按钮退出当前窗口



2、新建一个窗口,窗口只有一个ok按钮,此窗口计划为第一个窗口点击New按钮生成


3、connect(new按钮单击信号 --> 打开new window窗口)

UILoader::UILoader(QWidget *parent, Qt::WFlags flags): QMainWindow(parent, flags){ui.setupUi(this);connect(ui.newButton,SIGNAL(clicked()),this,SLOT(newWindow()));}UILoader::~UILoader(){}void UILoader::newWindow(){QUiLoader lad;QFile f("new Window.ui");QWidget *wid = lad.load(&f);if (NULL != wid){wid->show();}}
private slots:void newWindow();

代码很简单,信号-->槽,这里的槽在当前class声明和实现

这里使用了QUiLoader和QFile,关于这两个class,可以使用Qt助手,可以方便看到其用法和所需头文件,这里就不再介绍了:



编译后运行:



如果需要使用动态对话框中的子部件,可以使用QObject::findChild<T>接口,比如我这个例子想访问新窗口的QLabel,将文本改变为"Hello World",可以这样实现:

QLabel* label = wid->findChild<QLabel*>("label");if (NULL != label){label->setText("Hello World");}
findChild接口需要QLabel的名称即可

Run: