Qt 创建带有复选框的下拉树
来源:互联网 发布:北风人工智能百度云 编辑:程序博客网 时间:2024/04/28 14:01
Qt 的自定义组件可以将任何自己想要的效果表达出来。这篇文件就讲解下如何在Qt 下创建 带有复选框的树,这个数是点击按钮弹出来的。效果如下图所示:
<img src="http://img.blog.csdn.net/20140727211253531" alt="" />
思路是这样的:
1, 整体控件是从QWidget继承而来。因为QWidget实现的是非常干净的,不像QMainwindow。所以一般来说自定义控件都会从QWidget继承。
2,将所需要的对象逐一New出来。
3,对QTreeWidget插入item,在插入item时,将item设置为带有复选框的。在Qt中每个Item都是有复选框选项的,只要将其设置一下就OK了。
4,将action关联到QTreeWidget和Menu上。将Menu关联到QToolButton上。
废话不多说,上代码:
.h文件<pre style="margin-top: 0px; margin-bottom: 0px;"><pre name="code" class="html">#include <QToolButton>#include <QTreeWidget>#include <QWidgetAction>#include <QTreeWidgetItem>#include <QMenu>class SelectMenuFrm : public QWidget{ Q_OBJECTpublic: explicit SelectMenuFrm(QWidget *parent = 0);private: void init();public slots: void setToolButtonText();private: QToolButton* m_toolbutton; QTreeWidget* m_treeWidget; QWidgetAction* m_widgetaction; QMenu* m_menu;};.cpp文件
SelectMenuFrm::SelectMenuFrm(QWidget *parent) : QWidget(parent){ init();}void SelectMenuFrm::init(){ m_toolbutton = new QToolButton(this); //设置QToolButton为弹式菜单 m_toolbutton->setPopupMode(QToolButton::InstantPopup); m_menu = new QMenu(this); m_treeWidget = new QTreeWidget(m_menu); m_widgetaction = new QWidgetAction(m_treeWidget); m_treeWidget->setFrameShape(QFrame::NoFrame);//设置无边框 //设置弹出的菜单大小 m_treeWidget->setMaximumHeight(200); m_treeWidget->setMaximumWidth(200); //插入条目并且设置可选框(所有的item都是可以设置可选框的) for (int i = 0; i < 4; i++) { QStringList str; str << QString("1") << QString("2"); QTreeWidgetItem* item = new QTreeWidgetItem(str); QTreeWidgetItem* childItem = new QTreeWidgetItem(str); item->addChild(childItem); item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); childItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); item->setCheckState(0, Qt::Unchecked); childItem->setCheckState(0, Qt::Unchecked); m_treeWidget->addTopLevelItem(item); m_treeWidget->setHeaderHidden(true); } m_widgetaction->setDefaultWidget(m_treeWidget); m_menu->addAction(m_widgetaction); m_toolbutton->setMenu(m_menu); connect(m_treeWidget, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(setToolButtonText()));}void SelectMenuFrm::setToolButtonText(){ m_toolbutton->setText(QString("000"));}
在代码中给QTreeWidget关联了一个信号槽,在中QTreeWidget中某一项或者多项时,QToolButton的Text就会改变。在这个槽里面可以干很多事情,我这里就只是例举了一下而已。这里面还可以设置父亲的选项勾上则子必定要勾上等等一系列事件都可以进行设置。其实不管是QTreeWidget, QListWidget, QTableWidget 都可以这样设置。本人亦是Qt新手,如有错误地方请留言出来。谢谢。共同学习
1 0
- Qt 创建带有复选框的下拉树
- Ztree创建带有复选框的树
- easyui combobox 制作带有复选框的下拉菜单
- 带有复选框的数据网格DataGrid
- Qt: 创建具有复选框的树形控件
- QT-创建具有复选框的树形控件
- Qt创建具有复选框的树形控件
- CListBox 带有复选框
- QT带有主创窗口应用程序的创建
- 刚研究出来的QT下拉框中复选框的多选
- 导出的Excel带有下拉框
- 复选框与下拉框的交互
- 关于下拉框,复选框的问题
- 带复选框的下拉框
- 下拉列表该复选框的例子
- select下拉复选框的做法
- JS下拉复选框的实现
- MAC 复选框,下拉列表的使用
- 今天尝试修改一个1GB多大小的文本文件,发现Notepad++不能打开该文件
- 树状数组的模板;
- Navicat“不支持远程连接的MySql数据库”怎么办
- error: reference to 'max' is ambiguous
- 运维自动化
- Qt 创建带有复选框的下拉树
- 设计模式 之 桥接
- 其他的常用标签
- 进程间的通信方式总结
- 那些IT业界大佬,这回算亏到家了。
- vivado+zedboard之audio驱动
- 牛腩新闻发布系统--重构SQL Helper
- SQL逻辑查询解析
- 浅析UML之类图的正向工程和逆向工程