QT_PC实战常见问题_控件传值问题总结
2014-06-05 15:36
447 查看
QT写界面程序的时候,要考虑到多个控件之间值传递的问题,以及控件之间的协同控制。针对不同的应用场景,采取不同的策略。
1. 针对treeview tableview listview类型的结构,利用QTreeWidgetItem等Item来存储一些数据,很方便。使用的时候遍历整个结构就可以了,而不需要针对该类型的结构而外的定义新的结构。获取对应QModelIndex的值, index.model()->data(index, role)。节点删除delete ui->treewidget->currentItem();
关键数据在于QTreeWidgetItem,treeWidget->currentItem()->setData(column, role, QVarient); 用户可以使用Qt::UserRole来保存用户数据, 同样可以使用data(column, role)来获取存储的用户数据。
QTreeWidget可以通过QTreeWidgetItemIterator类遍历,通过childCount()来获取当前的级数。或者可以通过QTreeWidgetItem, topLevelItem针对不同的子树进行遍历。实际应用中将两者结合起来(Iterator + topLevelItem)
2. 使用全局变量存储数据, QString globalData; extern QString globalData, 使用全局变量的缺陷是,不同模块之间的耦合性增强,同时在开发多线程程序的时候要注意全局变量的使用问题。
3.自顶向下的值传递问题,可以对底层的窗体增加public方法,用于相关的数据传递。
4.自底向上的值传递问题,signal/slot机制的方式,子窗体触发emit,父窗口相应相应的事件,如下例:
mainWindow
![](https://img-blog.csdn.net/20140605154225656?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amlhamllbGl1MjAwOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
第二次点击打印存储的值, dialog类中定义signals: void sendData(QString str); 当窗口accpect事件时,触发相应的信号 emit sendData(ui->lineEdit->text());
1. 针对treeview tableview listview类型的结构,利用QTreeWidgetItem等Item来存储一些数据,很方便。使用的时候遍历整个结构就可以了,而不需要针对该类型的结构而外的定义新的结构。获取对应QModelIndex的值, index.model()->data(index, role)。节点删除delete ui->treewidget->currentItem();
关键数据在于QTreeWidgetItem,treeWidget->currentItem()->setData(column, role, QVarient); 用户可以使用Qt::UserRole来保存用户数据, 同样可以使用data(column, role)来获取存储的用户数据。
QTreeWidget可以通过QTreeWidgetItemIterator类遍历,通过childCount()来获取当前的级数。或者可以通过QTreeWidgetItem, topLevelItem针对不同的子树进行遍历。实际应用中将两者结合起来(Iterator + topLevelItem)
2. 使用全局变量存储数据, QString globalData; extern QString globalData, 使用全局变量的缺陷是,不同模块之间的耦合性增强,同时在开发多线程程序的时候要注意全局变量的使用问题。
3.自顶向下的值传递问题,可以对底层的窗体增加public方法,用于相关的数据传递。
4.自底向上的值传递问题,signal/slot机制的方式,子窗体触发emit,父窗口相应相应的事件,如下例:
mainWindow
第二次点击打印存储的值, dialog类中定义signals: void sendData(QString str); 当窗口accpect事件时,触发相应的信号 emit sendData(ui->lineEdit->text());
相关文章推荐
- QT_PC实战常见问题_应用发布相关
- QT_PC实战常见问题_系统美化(使用样式表)
- [原创]QT for Linux(ubuntu)编程常见问题总结
- QT中常见的问题总结系列
- Storm入门(八)Storm实战常见问题总结(持续更新)
- win7 32bit + opencv2.4.4 + qt 5.2.1搭配环境常见问题总结
- Storm入门(八)Storm实战常见问题总结(持续更新)
- [原创]Loadruner常见问题解决总结
- Sql server一些常见性能问题的总结
- SQL SERVER中一些常见性能问题的总结(转载)
- Php部分常见问题总结(强烈推荐)
- SQL SERVER中一些常见性能问题的总结
- SQL SERVER中一些常见性能问题的总结[转]
- 开发与测试常见问题总结与建议
- Php部分常见问题总结第1/2页
- VC常见入门问题总结(一)
- Php部分常见问题总结
- SQL SERVER中一些常见性能问题的总结
- 总结Asp.net中Page加载PostData的具体过程 进而解决"获取动态创建的控件的PostData数据"问题
- JfreeChart使用经验总结(分析了使用中碰到的一些常见问题)