Qt第七天 ╰+攻爆jí腚メ 2022-04-12 10:50 319阅读 0赞 ## QListWidget和QToolButton的用法 ## ## 界面设计 ## **1.混合式界面设计** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70]在UI设计器界面完成以上的窗体设计 **创建Action** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70 1] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70 2] ## QListWidget的操作 ## **1.初始化列表** void MainWindow::on_actListIni_triggered()//初始化列表 { QListWidgetItem *aItem;//列表框里一行是一个项,是一个QListWidgetItem类的对象 QIcon icon; icon.addFile(":/images/icons/check2.ico"); bool ch=ui->checkBox->isChecked();//是否可编辑 ui->listWidget->clear(); for(int i=0;i<10;i++)//通过循环添加十项 { QString str=QString::asprintf("Item %d",i); aItem=new QListWidgetItem(); //向列表框中添加一个项就需要创建一个QListWidgetItem类型的实例aItem aItem->setText(str);//设置文字标签 aItem->setIcon(icon);//设置图标 aItem->setCheckState(Qt::Checked);//设置选中状态 if(ch) { aItem->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEditable|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled); //通过枚举值设置aItem属性为可被选择,可被编辑,可被复选,可被使能 } else { aItem->setFlags(Qt::ItemIsSelectable|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled); //没有设置可被编辑属性 } ui->listWidget->addItem(aItem);//在ListWidget中添加一项 } } **2.插入项** void MainWindow::on_actListInsert_triggered()//插入项 //在插入之前同样需要先创建aItem,设置他的属性 //然后使用QListWidget的insertItem()函数 { QListWidgetItem *aItem=new QListWidgetItem(); aItem->setText("New Inserted Item"); QIcon icon; icon.addFile(":/images/icons/check2.ico"); aItem->setIcon(icon); aItem->setCheckState(Qt::Checked); bool ch=ui->checkBox->isChecked(); if(ch) { aItem->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEditable|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled); //通过枚举值设置aItem属性为可被选择,可被编辑,可被复选,可被使能 } else { aItem->setFlags(Qt::ItemIsSelectable|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled); //没有设置可被编辑属性 } int row=ui->listWidget->currentRow();//获取当前选择的行 ui->listWidget->insertItem(row,aItem); } **3.删除当前项和清空列表** void MainWindow::on_actListClear_triggered()//清空列表 { ui->listWidget->clear(); } void MainWindow::on_actListDelete_triggered()//删除当前项 { int row=ui->listWidget->currentRow(); //依旧需要创建一个aItem来代表所选中的行的QListWidgetItem QListWidgetItem *aItem=ui->listWidget->takeItem(row);//takeItem只是移除一项 delete aItem;//手工删除对象 } **5.QListWidget的常用信号** void MainWindow::on_listWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)//listWidget当前选中项改变 //QListWidgetItem *current表示当前项 //QListWidgetItem *previous表示前一项 //需要在头文件中加入<QListWidget> { QString str; if(current!=NULL)//需要对current和previous进行判断是否为空 //否则会出现访问错误 { if(previous==NULL) { str="当前项"+current->text();//获取当前项的文本 } else { str="前一项"+previous->text()+"当前项"+current->text();//获取当前项和之前项的文本 } } else { str=""; } ui->lineEdit->setText(str);//在lineEdit处显示 } ## QToolButton与下拉式菜单 ## **1.QToolButton关联QAction** 头文件 void setActionsForButton();//定义一个函数为ToolButton设置关联Actions 构造函数 //调用setActionsForButton()函数 setActionsForButton(); void MainWindow::setActionsForButton()//setActionForButton函数的实现 //需要在构造函数中调用 { ui->tBtnListIni->setDefaultAction(ui->actListIni);//初始化列表 ui->tBtnListAppend->setDefaultAction(ui->actAppend);//添加新项 ui->tBtnListClear->setDefaultAction(ui->actListClear);//清除列表 ui->tBtnListDelete->setDefaultAction(ui->actListDelete);//删除当前项 ui->tBtnListInsert->setDefaultAction(ui->actListInsert);//插入新项 ui->tBtnSelALL->setDefaultAction(ui->actSelALL);//全选 ui->tBtnSelInvs->setDefaultAction(ui->actSelInvs);//反选 ui->tBtnSelNone->setDefaultAction(ui->actSelNone);//全不选 } **2.为QToolButton按钮设计下拉菜单** 头文件 void createSelectionPopMenu() 构造函数 //调用createSelectionPopMenu()函数 createSelectionPopMenu(); void MainWindow::createSelectionPopMenu()//createSelectionPopMenu()的实现 { //创建下拉菜单 QMenu *menuSelection=new QMenu(this);//创建弹出式菜单 menuSelection->addAction(ui->actSelALL); menuSelection->addAction(ui->actSelInvs); menuSelection->addAction(ui->actSelNone); //listWidget上方的tBtnSelectionItem按钮 ui->tBtnSelectItem->setPopupMode(QToolButton::MenuButtonPopup);//在这种模式下,工具按钮显示一个特殊的箭头,以指示菜单存在。 //当按钮的箭头部分被按下时显示菜单。 //当点击按钮本身是会触发Action //即ui->actSelPopMenu //而我们已经在信号与槽的关联处将ui->actSelPopMenu与ui->actSellInvs关联 //所有会直接执行反选操作 ui->tBtnSelectItem->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);//设置文本在按钮旁边显示 ui->tBtnSelectItem->setDefaultAction(ui->actSelPopMenu);//toolButton关联Action ui->tBtnSelectItem->setMenu(menuSelection);//设置下拉菜单 //工具栏上的下拉式菜单 //首先需要新建一个toolButton //然后在为它创建下拉菜单 QToolButton *tBtn=new QToolButton(this); tBtn->setPopupMode(QToolButton::InstantPopup);//当按下工具按钮时,菜单不显示延迟。在这种模式下,按钮本身的动作不会被触发。 tBtn->setDefaultAction(ui->actSelPopMenu);//这里不会执行反选操作 tBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//设置文本在图标下方显示 tBtn->setMenu(menuSelection);//设置下拉菜单 ui->mainToolBar->addWidget(tBtn);//在主工具栏添加这个按钮 //工具栏添加分隔条 ui->mainToolBar->addSeparator(); //添加退出按钮 ui->mainToolBar->addAction(ui->actQuit); } ## 创建右键快捷菜单 ## void MainWindow::on_listWidget_customContextMenuRequested(const QPoint &pos)//创建右键快捷菜单 //添加头文件 // 若想通过右键单击QListWidget触发与customContexMenuRequsted()绑定的信号, //还得设置QListWidget的MenuPolicy属性 //可以在属性中直接修改 { Q_UNUSED(pos);//未使用,避免错误 QMenu *menuList=new QMenu(this);//this可以省略 menuList->addAction(ui->actAppend); menuList->addAction(ui->actListClear); menuList->addAction(ui->actListDelete); menuList->addAction(ui->actListIni); menuList->addAction(ui->actListInsert); menuList->addSeparator();//添加分隔条 menuList->addAction(ui->actSelALL); menuList->addAction(ui->actSelInvs); menuList->addAction(ui->actSelNone); //在鼠标光标处显示 //menuList->exec(pos);//无法做到在鼠标点击处显示 menuList->exec(QCursor::pos()); delete menuList;//删除手动添加的指针 } ## 运行结果 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70 3] ## 代码包下载 ## ([https://download.csdn.net/download/therookie1/10823735][https_download.csdn.net_download_therookie1_10823735]) [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70]: /images/20220412/4223d89e992c4293a3cb41dd15d29ee4.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70 1]: /images/20220412/2c7ff6b899294b97919a5cdd92811658.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70 2]: /images/20220412/88d9a4a107ec48f69c45557f2e46ec04.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70 3]: /images/20220412/401b89c9ca5a4137ad5052946d64f5fa.png [https_download.csdn.net_download_therookie1_10823735]: https://download.csdn.net/download/therookie1/10823735
相关 QT第三天 字符串与输入输出 字符串与数值之间的转换 void Widget::on_btnCal_clicked() { QString st 谁践踏了优雅/ 2022年04月13日 13:23/ 0 赞/ 348 阅读
相关 QT第三天 1.QPerson类的定义 ifndef QPERSON_H define QPERSON_H include<QObject>//加入<QObj 小咪咪/ 2022年04月13日 07:43/ 0 赞/ 321 阅读
相关 Qt第七天 QListWidget和QToolButton的用法 界面设计 1.混合式界面设计 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5 ╰+攻爆jí腚メ/ 2022年04月12日 10:50/ 0 赞/ 320 阅读
相关 QT第六天 QComboBox和QPlainTextEdit的用法 QComboBox的使用 设计时属性设置 在界面上放置QComboBox组件后,双击组件,弹出列表项编 布满荆棘的人生/ 2022年04月12日 07:21/ 0 赞/ 347 阅读
相关 QT第五天 时间日期与定时器 时间日期相关的类 ([https://blog.csdn.net/theRookie1/article/details/84672489][htt 缺乏、安全感/ 2022年04月12日 04:50/ 0 赞/ 379 阅读
相关 QT第十天 QFileSystemModel 使用QFileSystemModel作为数据模型,QTreeView,QListView和QTableView为主要组件 在Tree Bertha 。/ 2022年04月11日 11:42/ 0 赞/ 330 阅读
相关 Qt第八天 QTreeWidget和QDockWidget用法 本例子以QTreeWidget为主要组件,创建一个照片管理器 头文件 ifndef MAINWINDO 旧城等待,/ 2022年04月11日 02:15/ 0 赞/ 343 阅读
相关 QT第二十七天 .pro文件 ------------------------------------------------- Project created Bertha 。/ 2022年04月10日 14:20/ 0 赞/ 334 阅读
相关 Qt第十七天 QGraphicsView程序基本结构和功能实现 mainwindow.h ifndef MAINWINDOW_H define MAINWINDOW_ 快来打我*/ 2022年04月04日 09:18/ 0 赞/ 311 阅读
相关 冲刺第七天 王重阳:昨天完成了商品界面的增删改查 今天:学要完成商品中图片的添加。一直不知道图片用什么数据库存储。所以一直苦恼。但通过百度最后还是完成了 解决问题:数据库中文 谁借莪1个温暖的怀抱¢/ 2021年10月18日 09:16/ 0 赞/ 385 阅读
还没有评论,来说两句吧...