C++系列三:QT-Controls

发布时间 2023-09-05 17:03:14作者: cactus9

目录

前言

最简单控件,示例

//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"));