QT 5.9 93页例子
2020-02-17 04:45
281 查看
头文件
`#ifndef MYMAINWINDOW_H #define MYMAINWINDOW_H #pragma execution_character_set("utf-8") //解决中文乱码 #include <QMainWindow> #include<QListWidgetItem> namespace Ui { class myMainWindow; } class myMainWindow : public QMainWindow { Q_OBJECT public: explicit myMainWindow(QWidget *parent = 0); ~myMainWindow(); private slots: void on_actListIni_triggered(); void on_actListInsert_triggered(); void on_actListDelete_triggered(); void on_actListClear_triggered(); void on_actSelAll_triggered(); void on_actNoSrlAll_triggered(); void on_actRev_triggered(); void on_listWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous); void on_listWidget_customContextMenuRequested(const QPoint &pos); private: void createSelectPopMenu(); private: Ui::myMainWindow *ui; }; #endif // MYMAINWINDOW_H
//头文件实现
#include "mymainwindow.h" #include "ui_mymainwindow.h" #include<QMenu> myMainWindow::myMainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::myMainWindow) { ui->setupUi(this); //setCentralWidget(ui->splitter); createSelectPopMenu(); } myMainWindow::~myMainWindow() { delete ui; } void myMainWindow::on_actListIni_triggered() { QListWidgetItem *aItem;//每行是Item QIcon aIcon; aIcon.addFile(":/列表.png"); bool chk = ui->checkBox->isCheckable();//是否可编辑 ui->listWidget->clear(); for(int i = 0;i<10;i++) { aItem = new QListWidgetItem(); QString str = QString::asprintf("Item %d",i); aItem->setText(str);//设置文字标签 aItem->setIcon(aIcon);//设置图标 aItem->setCheckState(Qt::Unchecked);//设置为选中状态 if(chk)//判断是否可编辑,设置flags aItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); else aItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); ui->listWidget->addItem(aItem); } } void myMainWindow::on_actListInsert_triggered() {//插入一个项 QIcon aIcon; aIcon.addFile(":/插入行.png"); bool chk=ui->checkBox->isCheckable(); QListWidgetItem *aItem = new QListWidgetItem("New Inserted Item"); aItem->setIcon(aIcon); aItem->setCheckState(Qt::Checked); if(chk) aItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt:: 20000 ItemIsEnabled); else aItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); ui->listWidget->insertItem(ui->listWidget->currentRow(),aItem); } void myMainWindow::on_actListDelete_triggered() { int row = ui->listWidget->currentRow(); QListWidgetItem *aItem = ui->listWidget->takeItem(row); delete aItem; } void myMainWindow::on_actListClear_triggered() { ui->listWidget->clear(); } void myMainWindow::on_actSelAll_triggered() {//全选中 int cnt = ui->listWidget->currentRow();//个数 for(int i = 0;i < cnt; i++) { QListWidgetItem *aItem = ui->listWidget->item(i);//获取一项 aItem->setCheckState(Qt::Checked); } } void myMainWindow::on_actNoSrlAll_triggered() {//全不选中 int cnt = ui->listWidget->currentRow();//个数 for(int i = 0;i < cnt; i++) { QListWidgetItem *aItem = ui->listWidget->item(i);//获取一项 aItem->setCheckState(Qt::Unchecked); } } void myMainWindow::on_actRev_triggered() { int cnt = ui->listWidget->currentRow();//个数 for(int i = 0;i < cnt; i++) { QListWidgetItem *aItem = ui->listWidget->item(i);//获取一项 aItem->setCheckState(Qt::PartiallyChecked); } } void myMainWindow::on_listWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous) { QString str; if(current != NULL) { if(previous == NULL) str = "前一项: "+current->text(); else str = "前一项: "+previous->text()+";当前项:"+current->text(); ui->lineEdit->setText(str); } } void myMainWindow::createSelectPopMenu() {//为QtoolButton设计下拉菜单 QMenu *menuSelection = new QMenu(this);//创建弹出式菜单 menuSelection->addAction(ui->actSelAll); menuSelection->addAction(ui->actNoSrlAll); menuSelection->addAction(ui->actRev); //listwidget上方的btn按钮 ui->toolButton_6->setPopupMode(QToolButton::MenuButtonPopup); ui->toolButton_6->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); ui->toolButton_6->setDefaultAction(ui->actRev); ui->toolButton_6->setMenu(menuSelection); //工具栏项选择 /* QToolButton *aBtn = new QToolButton(this); aBtn->setPopupMode(QToolButton::InstantPopup); aBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//按钮样式 aBtn->setDefaultAction(ui->actRev); aBtn->setMenu(menuSelection);//设置下拉菜单 ui->mainToolBar->addWidget(aBtn);//在工具栏添加按钮 //工具栏添加分隔条,和退出按钮 ui->mainToolBar->addAction(ui->actEsc); *///由于前期ui布局有点和书上例子有区别故这段代码不要,要了也能跑起来只是难看 ui->mainToolBar->addSeparator(); } void myMainWindow::on_listWidget_customContextMenuRequested(const QPoint &pos) { Q_UNUSED(pos); QMenu *menuList=new QMenu(this);//创建菜单 //添加Actions创建菜单项 menuList->addAction(ui->actListIni); menuList->addAction(ui->actListClear); menuList->addAction(ui->actListInsert); menuList->addAction(ui->actListAppend); menuList->addAction(ui->actListDelete); menuList->addSeparator(); menuList->addAction(ui->actNoSrlAll); menuList->addAction(ui->actSelAll); menuList->addAction(ui->actRev); menuList->exec(QCursor::pos());//在鼠标光标位置显示右键快捷菜单 delete menuList; } ![Actions](https://img-blog.csdnimg.cn/20191031133021397.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDk5MjE3MQ==,size_16,color_FFFFFF,t_70) ```![信号和槽](https://img-blog.csdnimg.cn/20191031132930876.png)![这是gui布局按钮都是ToolButton,还有QListWidget,QTabWidget,QToolBox,QCheacBox,lineEdit,lable标签,再加个主工具栏构成](https://img-blog.csdnimg.cn/20191031132013233.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDk5MjE3MQ==,size_16,color_FFFFFF,t_70)
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Qt编译报错:未找到文件main.obj
- Qt QSystenTrayIcon弹出Qmenu时不是位置偏移的问题
- VVC代码学习2:帧内亮度预测函数estIntraPredLumaQT
- 工厂有库存的我司高价IMX377CQT-C回收IMX317CQC-C长期回收OV芯片
- Qt+VS2015 关于exe文件的图标
- QT配置halcon&opencv(VS)
- Qt图像实时采集及边缘提取(多线程)
- Qt 连接SQL Server数据库出现的几点问题
- Failure to open file: /usr/lib/qt4/examples/dialogs/tabdialog/Makefile
- Qt读取wav文件处理音频数据时的格式转换问题
- Qt sqlite多条件查询插入QTableWidget表格(记录备份以防忘记,新手!)
- 搭建pyqt5环境
- pyqt深入学习
- windows环境下Qt连接MySql
- QT4.8.7安装详细教程(MinGW 4.8.2和QTCreator4.2.0)
- ubuntu 环境 cross compile 交叉编译 ARM Qt 集成 opencv
- $fhqTreap$
- QT 日志系统的使用
- 转qt 中的timer
- PyQt学习笔记_利用ScrollBar控制图片位置(实现滑动效果)