上一次的文章讲到了使用Signal&Slot机制进行窗体间数据的传递(见)。这里介绍另一种方式全局变量进行传值,在上一次的界面中的mainWindow和dialog中分别加入一个Label和LineEdit以及一个pushbutton。效果如:
运行方式为在主界面mainWindow中单击全局变量按钮对全局变量进行赋值,赋值完成后,在Dialog中单击全局变量在LineEdit中显示全局变量的值,可以发现这种方式下可以很容易的反转传递内容。
具体实现为:
在mainWindow.cpp文件中加入:
QString globaldata; //声明一个全局变量用于窗体间传值
在全局传值按钮的clicked事件中对gloabaldata进行赋值:
void MainWindow::on_globalpb_clicked()
{
globaldata = ui->lineEdit->text();
}
在Dialog.cpp文件中声明外部变量:
extern QString globaldata;
在全局传值按钮的clicked事件中对gloabaldata进行显示:
void Dialog::on_pushButton_clicked()
{
ui->lineEdit_2->setText(globaldata);
}
这种方式,可以看到一些缺点,就是不容易对UI界面进行实时显示,但是这对于一个系统来讲也有一些优势,就是可以方便地将一个系统的配置分配到相关的UI界面中去,但是,同样的,也增加了程序之间的耦合性。
为了节省篇幅,这里不将最后的结果上传上来了, 下一博文,将介绍窗体间传值的另一种方式:public函数接口方式。
推荐阅读:
Ubuntu 环境下Gtk与QT编译环境安装与配置
Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法
Linux下为刚安装好的Qt Creator 创建桌面启动图标
Ubuntu 11.04安装QT Creator 2.5.0