首页 > 编程语言 >C++系列三:QT-Controls

C++系列三:QT-Controls

时间:2023-09-05 17:13:57浏览次数:42  
标签:QT 创建 C++ tableWidget Controls new model 节点 rootItem

目录

前言

最简单控件,示例

//QPushButton
QPushButton *button = new QPushButton("点击我", &w); 
button.setText("Click me!");  
QObject::connect(&button, &QPushButton::clicked, [&](){  
    // button被点击时执行的代码  
    qDebug() << "Button clicked!";  
});  


//QToolButton
QWidget window;// 创建一个QWidget窗口
QVBoxLayout *layout = new QVBoxLayout(&window);// 创建一个垂直布局管理器
// 创建一个QToolButton,并设置按钮的图标和文本
QToolButton *toolButton = new QToolButton;
toolButton->setIcon(QIcon(":/icon.png")); // 设置图标
toolButton->setText("工具按钮"); // 设置文本
layout->addWidget(toolButton);// 将QToolButton添加到布局中
// 设置窗口的布局
window.setLayout(layout);


//QRadioButton
QRadioButton *radioButton1 = new QRadioButton("选项 1");// 创建三个单选按钮
QRadioButton *radioButton2 = new QRadioButton("选项 2");
QRadioButton *radioButton3 = new QRadioButton("选项 3");
// 将单选按钮添加到布局中
layout->addWidget(radioButton1);
layout->addWidget(radioButton2);
layout->addWidget(radioButton3);


//QCheckBox
QCheckBox *checkBox1 = new QCheckBox("选项 1");// 创建三个复选框
QCheckBox *checkBox2 = new QCheckBox("选项 2");
QCheckBox *checkBox3 = new QCheckBox("选项 3");
// 将复选框添加到布局中
layout->addWidget(checkBox1);
layout->addWidget(checkBox2);
layout->addWidget(checkBox3);



//QListView
// 创建一个QStringListModel,用于存储列表项的数据
QStringListModel *model = new QStringListModel;
// 添加一些示例数据
QStringList items;
items << "项1" << "项2" << "项3" << "项4" << "项5";
model->setStringList(items);
// 创建一个QListView并设置模型
QListView *listView = new QListView;
listView->setModel(model);


//QTreeView
// 创建一个QStandardItemModel,用于存储树形数据
QStandardItemModel *model = new QStandardItemModel;
// 创建一个根节点
QStandardItem *rootItem = model->invisibleRootItem();
// 创建一些子节点
QStandardItem *item1 = new QStandardItem("节点1");
QStandardItem *item2 = new QStandardItem("节点2");
QStandardItem *item3 = new QStandardItem("节点3");
// 将子节点添加到根节点
rootItem->appendRow(item1);
rootItem->appendRow(item2);
rootItem->appendRow(item3);
// 创建一个QTreeView并设置模型
QTreeView *treeView = new QTreeView;
treeView->setModel(model);


//QTableView
// 创建一个QStandardItemModel,用于存储表格数据
QStandardItemModel *model = new QStandardItemModel;
// 设置表头
model->setHorizontalHeaderLabels({"列1", "列2", "列3"});
// 插入一些数据
for (int row = 0; row < 5; ++row) {
    for (int column = 0; column < 3; ++column) {
        QModelIndex index = model->index(row, column, QModelIndex());
        model->setData(index, QString("行%1,列%2").arg(row + 1).arg(column + 1));
    }
}
// 创建一个QTableView并设置模型
QTableView *tableView = new QTableView;
tableView->setModel(model);


//QColumnView
// 创建一个QFileSystemModel,用于显示文件系统
QFileSystemModel *model = new QFileSystemModel;
// 设置模型的根目录,这里设置为当前目录
model->setRootPath(QDir::currentPath());
// 创建一个QColumnView并设置模型
QColumnView *columnView = new QColumnView;
columnView->setModel(model);


//QUndoView
用于显示和管理撤销/重做操作的控件
// 创建一个QUndoStack来管理操作历史记录
QUndoStack undoStack;
// 创建一个QUndoView来显示操作历史记录
QUndoView undoView(&undoStack);
undoView.setEmptyLabel("无可撤销操作");
// 创建一个按钮来执行一个示例操作
QPushButton button("执行操作");
QObject::connect(&button, &QPushButton::clicked, [&]() {
    // 在这里执行一个示例操作,将其添加到撤销堆栈中
    undoStack.push(new QUndoCommand("示例操作"));
});


//QListWidget
// 创建一个QListWidget
QListWidget *listWidget = new QListWidget;
// 创建一些示例列表项
QListWidgetItem *item1 = new QListWidgetItem("项目1");
QListWidgetItem *item2 = new QListWidgetItem("项目2");
QListWidgetItem *item3 = new QListWidgetItem("项目3");
// 将列表项添加到QListWidget
listWidget->addItem(item1);
listWidget->addItem(item2);
listWidget->addItem(item3);


//QTreeWidget
// 创建一个QTreeWidget,用于显示树形数据
QTreeWidget *treeWidget = new QTreeWidget;
// 创建树形控件的列标题
QStringList headers;
headers << "列1" << "列2";
treeWidget->setHeaderLabels(headers);
// 创建根节点
QTreeWidgetItem *rootItem = new QTreeWidgetItem(treeWidget);
rootItem->setText(0, "根节点");
// 创建一些子节点
QTreeWidgetItem *item1 = new QTreeWidgetItem(rootItem);
item1->setText(0, "子节点1");
item1->setText(1, "子节点1的列2");
QTreeWidgetItem *item2 = new QTreeWidgetItem(rootItem);
item2->setText(0, "子节点2");
item2->setText(1, "子节点2的列2");
// 将根节点添加到树形控件
treeWidget->addTopLevelItem(rootItem);


//QTableWidget
// 创建一个QTableWidget,用于显示表格数据
QTableWidget *tableWidget = new QTableWidget;
// 设置表格的行数和列数
tableWidget->setRowCount(3); // 3行
tableWidget->setColumnCount(2); // 2列
// 设置表格的表头
QStringList headers;
headers << "列1" << "列2";
tableWidget->setHorizontalHeaderLabels(headers);
// 在表格中插入一些数据
tableWidget->setItem(0, 0, new QTableWidgetItem("行1列1"));
tableWidget->setItem(0, 1, new QTableWidgetItem("行1列2"));
tableWidget->setItem(1, 0, new QTableWidgetItem("行2列1"));
tableWidget->setItem(1, 1, new QTableWidgetItem("行2列2"));
tableWidget->setItem(2, 0, new QTableWidgetItem("行3列1"));
tableWidget->setItem(2, 1, new QTableWidgetItem("行3列2"));

标签:QT,创建,C++,tableWidget,Controls,new,model,节点,rootItem
From: https://www.cnblogs.com/zhouyitty/p/17680178.html

相关文章

  • C++_手写数据库连接池
    C++_手写数据库连接池关键技术点MySQL数据库编程、单例模式、queue队列容器、C++11多线程编程、线程互斥、线程同步通信和unique_lock、基于CAS的原子整形、智能指针shared_ptr、lambda表达式、生产者-消费者线程模型连接池的主要功能点单例模式:因为连接池只需要一个实例......
  • C++ 算法竞赛、01 周赛篇 | AcWing 第1场周赛
    AcWing第1场周赛竞赛-AcWing3577选择数字3577.选择数字-AcWing题库朴素暴力两层循环#include<cstdio>#include<iostream>#include<unordered_set>usingnamespacestd;constintN=101;inta[N],b[N];intmain(){intn,m;cin>>n;......
  • QT编译时qmake和cmake的区别
    qMakeQT+=coreguiQT缺省使用了core和gui库变量TARGET描述了目标文件的名称,即生成的应用程序的名字,默认采用工程文件所在的文件夹名字。变量TEMPLATE描述了为建立目标文件而采用何种模板,即生成何种形式的Makefile文件,有以下5种模板:应用程序app,为建立一个Qt应用程......
  • 将Python深度神经网络转换成C++
     项目方案:将Python深度神经网络转换成C++项目概述本项目旨在将使用Python编写的深度神经网络模型转换为C代码,以便在C环境中部署和运行。通过将模型从Python转换为C++,可以提高模型的性能和效率,并扩展模型在不同平台和设备上的应用。技术方案1.选择转换工具我们可以使用以下两种......
  • C和C++动态库区别
    1.C语言导出动态库需要在返回值和函数之间加上__declspec(dllexport)2.C语言导出动态库需要在class和类名之间加上__declspec(dllexport)3.C++由于支持函数重载,所以在编译时要给每个函数名重新改名字(加上参数信息),而C不支持,所以C语言无法使用C++的动态库4.在C++里导出dll时,使......
  • C/C++地铁线路查询系统[2023-09-05]
    C/C++地铁线路查询系统[2023-09-05]地铁线路查询问题描述:当一个用户从甲地到乙地时,由于不同需求,就有不同的交通路线,有人希望以最短距离到达,有人希望用最少的换乘次数等。请编写一北京地铁线路查询系统,通过输入起始站、终点站,为用户提供两种或以上决策的交通咨询。设计要求:......
  • C/C++《程序设计(上机)》选题[2023-09-05]
    C/C++《程序设计(上机)》选题[2023-09-05]2023-2024-1《程序设计(上机)》授课计划开发工具:TurboC/Visualstudio等等具体要求:用上述系统平台和开发工具完成所分配题目的程序,并撰写报告。一、课程任务概述本课程是学生在学习了C或C++等编程语言之后进行的一次实践性学习,通过......
  • Windows MSVC 编译 libcurl 库,并导入到 QT 中
    前提QT已经配置好,编译器使用MSVC2017编译libcurl库1、下载curl官网下载,windows选择.zip后缀的文件2、nmake编译(VisualStudio中的附带命令)(1)解压并进入文件夹,双击运行buildconf.bat文件(2)开始菜单找到VisualStudio2017->VisualStudioTools->VC文件夹,选择x86......
  • 【C++】 bind examples
    SimpleExample#include<algorithm>#include<vector>#include<iostream>voidprint(std::stringprefix,intnumber){std::cout<<prefix<<"-"<<number<<std::endl;}intmain(intargc,char......
  • Qt调用 mysql数据库 QSqlQuery::exec()堵塞
    RT,因为某个字段名称写错了,修改字段语句,语句大致如下altertablet_user_settingchangefield1field2varchar(32)default'11'comment'22'每当执行到query.exec()时,直接堵塞不动,刚好我这里使用workbench查看数据库,在workbench调用同样语句,程序就不堵塞了,每次都是这样。最......