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

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

其实用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:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值