您的位置:首页 > 编程语言 > Qt开发

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)
  • 点赞
  • 收藏
  • 分享
  • 文章举报
weixin_44992171 发布了1 篇原创文章 · 获赞 0 · 访问量 78 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: