#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMenu>
//void MainWindow::createListContextMenu()
//{ //创建右键弹出式菜单
// 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->actListSelALL);
// menuList->addAction(ui->actListSelNone);
// menuList->addAction(ui->actListSelInvs);
//}
void MainWindow::setActionsForButton()
{//为QToolButton按钮设置Action
ui->tBtnListIni->setDefaultAction(ui->actListIni);
ui->tBtnListClear->setDefaultAction(ui->actListClear);
ui->tBtnListInsert->setDefaultAction(ui->actListInsert);
ui->tBtnListAppend->setDefaultAction(ui->actListAppend);
ui->tBtnListDelete->setDefaultAction(ui->actListDelete);
ui->tBtnSelALL->setDefaultAction(ui->actSelALL);
ui->tBtnSelNone->setDefaultAction(ui->actSelNone);
ui->tBtnSelInvs->setDefaultAction(ui->actSelInvs);
}
void MainWindow::createSelectionPopMenu()
{
//创建下拉菜单
QMenu* menuSelection=new QMenu(this); //创建选择弹出式菜单
menuSelection->addAction(ui->actSelALL);
menuSelection->addAction(ui->actSelNone);
menuSelection->addAction(ui->actSelInvs);
//listWidget上方的tBtnSelectItem按钮
ui->tBtnSelectItem->setPopupMode(QToolButton::MenuButtonPopup);//菜单弹出模式,执行按钮的Action
ui->tBtnSelectItem->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); //按钮样式
ui->tBtnSelectItem->setDefaultAction(ui->actSelPopMenu);//关联Action
ui->tBtnSelectItem->setMenu(menuSelection); //设置下拉菜单
//工具栏上的 下拉式菜单按钮
QToolButton *aBtn=new QToolButton(this);
aBtn->setPopupMode(QToolButton::InstantPopup);//button's own action is not triggered.
aBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//按钮样式
aBtn->setDefaultAction(ui->actSelPopMenu); //设置Action,获取图标、标题等设置
aBtn->setMenu(menuSelection);//设置下拉菜单
ui->mainToolBar->addWidget(aBtn); //工具栏添加按钮
//工具栏添加分隔条,和“退出”按钮
ui->mainToolBar->addSeparator();
ui->mainToolBar->addAction(ui->actQuit);
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//由于在设计器里无法更改tabWidget三个页面的文字标签,在构造函数里用函数修改
// ui->tabWidget->setTabText(0,"QListWidget");
// ui->tabWidget->setTabText(1,"QTreeWidget");
// ui->tabWidget->setTabText(2,"QTableWidget");
setCentralWidget(ui->splitter); //设置中心组件
setActionsForButton();
createSelectionPopMenu();
// createListContextMenu(); //创建弹出式菜单
}
MainWindow::~MainWindow()
{
delete ui;
// delete menuList; //手工创建的指针必须手工删除
}
void MainWindow::on_actListClear_triggered()
{
ui->listWidget->clear(); //清除项
}
void MainWindow::on_actListIni_triggered()
{ //初始化项
QListWidgetItem *aItem; //每一行是一个QListWidgetItem
QIcon aIcon;
aIcon.addFile(":/images/icons/check2.ico"); //设置ICON的图标
bool chk=ui->chkBoxListEditable->isChecked();//是否可编辑
ui->listWidget->clear(); //清除项
for (int i=0; i<10; i++)
{
QString str=QString::asprintf("Item %d",i);
aItem=new QListWidgetItem(); //新建一个项
aItem->setText(str); //设置文字标签
aItem->setIcon(aIcon);//设置图标
aItem->setCheckState(Qt::Checked); //设置为选中状态
if (chk) //可编辑, 设置flags
aItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable |Qt::ItemIsUserCheckable |Qt::ItemIsEnabled);
else//不可编辑, 设置flags
aItem->setFlags(Qt::ItemIsSelectable |Qt::ItemIsUserCheckable |Qt::ItemIsEnabled);
ui->listWidget->addItem(aItem); //增加一个项
}
}
void MainWindow::on_chkBoxListEditable_clicked(bool checked)
{ //可编辑 QCheckBox的响应代码, 设置所有项是否可编辑
int i,cnt;
QListWidgetItem *aItem;
Qt::ItemFlags flags;
cnt=ui->listWidget->count();//项的个数
for (i=0; i<cnt; i++)
{
aItem=ui->listWidget->item(i);//获得一个项
// flags=aItem->flags();
if (checked) //可编辑
aItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable |Qt::ItemIsUserCheckable |Qt::ItemIsEnabled);
else
aItem->setFlags(Qt::ItemIsSelectable |Qt::ItemIsUserCheckable |Qt::ItemIsEnabled);
// flags = flags & (!Qt::ItemIsEditable);
// aItem->setFlags(flags);
}
}
void MainWindow::on_listWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
{ //listWidget当前选中项发生变化
QString str;
if (current != NULL) //需要检测变量指针是否为空
{
if (previous==NULL) //需要检测变量指针是否为空
str="当前:"+current->text();
else
str="前一项:"+previous->text()+"; 当前项:"+current->text();
ui->editCutItemText->setText(str);
}
}
void MainWindow::on_actListInsert_triggered()
{ //插入一个项
// QListWidgetItem *aItem;
QIcon aIcon;
aIcon.addFile(":/images/icons/check2.ico"); //图标
bool chk=ui->chkBoxListEditable->isChecked(); //是否可比那几
QListWidgetItem* aItem=new QListWidgetItem("New Inserted Item"); //创建一个项
aItem->setIcon(aIcon);//设置图标
aItem->setCheckState(Qt::Checked); //设置为checked
if (chk) //设置标记
aItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable |Qt::ItemIsUserCheckable |Qt::ItemIsEnabled);
else
aItem->setFlags(Qt::ItemIsSelectable |Qt::ItemIsUserCheckable |Qt::ItemIsEnabled);
ui->listWidget->insertItem(ui->listWidget->currentRow(),aItem); //在当前行的上方插入一个项
}
void MainWindow::on_actListAppend_triggered()
{//增加一个项
// QListWidgetItem *aItem;
// bool chk;
QIcon aIcon;
aIcon.addFile(":/images/icons/check2.ico"); //设定图标
bool chk=ui->chkBoxListEditable->isChecked();//是否可编辑
QListWidgetItem* aItem=new QListWidgetItem("New Added Item"); //创建一个Item
aItem->setIcon(aIcon); //设置图标
aItem->setCheckState(Qt::Checked); //设置为checked
if (chk) //设置标志
aItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable |Qt::ItemIsUserCheckable |Qt::ItemIsEnabled);
else
aItem->setFlags(Qt::ItemIsSelectable |Qt::ItemIsUserCheckable |Qt::ItemIsEnabled);
ui->listWidget->addItem(aItem);//增加一个项
}
void MainWindow::on_actListDelete_triggered()
{ //删除当前项
// QListWidgetItem *aItem;
int row=ui->listWidget->currentRow();//当前行
QListWidgetItem* aItem=ui->listWidget->takeItem(row); //移除指定行的项,但不delete
delete aItem; //需要手工删除对象
// QListWidgetItem *QListWidget::takeItem(int row)
// Removes and returns the item from the given row in
// the list widget; otherwise returns 0.
// Items removed from a list widget will not be managed by Qt,
// and will need to be deleted manually.
}
void MainWindow::on_listWidget_customContextMenuRequested(const QPoint &pos)
{
Q_UNUSED(pos);
// QMenu *menuList; //自定义弹出式菜单
QMenu* menuList=new QMenu(this); //创建菜单
//添加Actions创建菜单项
menuList->addAction(ui->actListIni);
menuList->addAction(ui->actList
没有合适的资源?快使用搜索试试~ 我知道了~
QListWidget控件应用示例
共150个文件
bmp:139个
jpg:2个
cpp:2个
需积分: 0 6 下载量 3 浏览量
2023-12-16
19:49:10
上传
评论
收藏 69KB RAR 举报
温馨提示
本实例不仅介绍QListWidget的使用,还包括如下一些功能的实现。 使用QTabWidget设计多页界面,工作区右侧就是一个具有3个页面的TabWidget组件。 使用QTooIBox设计多组工具箱,工作区左侧是一个有3个组的ToolBox组件。 使用分隔条(QSplitter)设计可以左右分割的界面,工作区的ToolBox和TabWidget之间 有一个splitter,运行时可以分割调整两个组件的大小。 创建Actions,用Actions设计主工具栏,用Action关联QToolButton按钮。 使用QTooIButton按钮,设置与Action关联,设计具有下拉菜单功能的ToolButton按钮, 在主工具栏上添加具有下拉菜单的ToolButton按钮。 使用QListWidget,演示如何创建和添师项,为项设置图标和复选框,如何遍历列表进行 选择。 QListWidget的主要信号currentItemChanged()的功能,编写响应槽函数。 为QListWidget组件利用己设计的Actions创建自定义快捷菜单。
资源推荐
资源详情
资源评论
收起资源包目录
QListWidget控件应用示例 (150个子文件)
122.bmp 1KB
exit.bmp 1KB
421.bmp 1KB
428.bmp 1KB
preview2.bmp 1KB
317.bmp 1KB
302.bmp 1KB
301.bmp 1KB
fold2.bmp 1KB
427.bmp 1KB
undo.bmp 1KB
328.bmp 1KB
new2.bmp 1KB
108.bmp 1KB
431.bmp 1KB
129.bmp 1KB
open1.bmp 1KB
322.bmp 1KB
310.bmp 1KB
306.bmp 1KB
307.bmp 1KB
next1.bmp 1KB
405.bmp 1KB
419.bmp 1KB
320.bmp 1KB
413.bmp 1KB
ubdo.bmp 1KB
319.bmp 1KB
saveall2.bmp 1KB
323.bmp 1KB
open4.bmp 1KB
106.bmp 1KB
export2.bmp 1KB
open2.bmp 1KB
414.bmp 1KB
415.bmp 1KB
409.bmp 1KB
314.bmp 1KB
cut.bmp 1KB
316.bmp 1KB
424.bmp 1KB
export1.bmp 1KB
407.bmp 1KB
upfold2.bmp 1KB
copy.bmp 1KB
304.bmp 1KB
327.bmp 1KB
331.bmp 1KB
329.bmp 1KB
422.bmp 1KB
410.bmp 1KB
305.bmp 1KB
131.bmp 1KB
416.bmp 1KB
432.bmp 1KB
105.bmp 1KB
103.bmp 1KB
411.bmp 1KB
redo.bmp 1KB
folder2.bmp 1KB
128.bmp 1KB
redo2.bmp 1KB
124.bmp 1KB
paste.bmp 1KB
406.bmp 1KB
preview1.bmp 1KB
pre2.bmp 1KB
401.bmp 1KB
402.bmp 1KB
125.bmp 1KB
delfold1.bmp 1KB
120.bmp 1KB
save1.bmp 1KB
330.bmp 1KB
104.bmp 1KB
423.bmp 1KB
upfold1.bmp 1KB
folder1.bmp 1KB
315.bmp 1KB
123.bmp 1KB
417.bmp 1KB
300.bmp 1KB
save2.bmp 1KB
418.bmp 1KB
309.bmp 1KB
pre1.bmp 1KB
import2.bmp 1KB
311.bmp 1KB
cut2.bmp 1KB
127.bmp 1KB
326.bmp 1KB
430.bmp 1KB
318.bmp 1KB
107.bmp 1KB
fold.bmp 1KB
303.bmp 1KB
102.bmp 1KB
delete1.bmp 1KB
313.bmp 1KB
119.bmp 1KB
共 150 条
- 1
- 2
资源评论
冷凝女子
- 粉丝: 499
- 资源: 67
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功