赞
踩
- //创建表格
- QTableWidget *tableWidget = new QTableWidget(10,5,ui->centralWidget);
- // 使表格平铺在界面
- tableWidget-> horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
- tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
- tableWidget->show();
-
-
- // 使表格平铺在界面
- tableWidget-> horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
- tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
- // 设置控制大小
- tableWidget->resize(500,500);
- // 删除列
- tableWidget->removeColumn(0);
- // 删除行
- tableWidget->removeRow(0);
-
-
- 1,设置表头
- QStringList header;
- header<<"姓名"<<"年龄";
- header.push_back(QString("备注"));
- tableWidget->setHorizontalHeaderLabels(header);
- tableWidget->setVerticalHeaderLabels(header);
- // 隐藏表头
- tableWidget->verticalHeader()->setVisible(false);
- // 最后一列自动宽度
- tableWidget->horizontalHeader()->setStretchLastSection(true);
-
-
- 2,一般显示
- tableWidget->setItem(0,0,new QTableWidgetItem("张三"));
- tableWidget->setItem(0,1,new QTableWidgetItem("33"));
-
- // 内容居中显示
- tableWidget->item(0,0)->setTextAlignment(Qt::AlignCenter);
-
- // 文本颜色
- tableWidget->item(0,0)->setTextColor(QColor(200,100,100));
- // 字体
- tableWidget->item(0,0)->setFont(QFont("Microsoft Yahei"));
- // 背景颜色
- tableWidget->item(0,0)->setBackgroundColor(QColor(100,100,100));
-
- 3,放一个控件
- // 单元格里放一个控件
- QComboBox *comBox = new QComboBox();
- comBox->addItem("Male");
- comBox->addItem("Female");
- tableWidget->setCellWidget(1,1,comBox);
-
- 4,加一个图标
- QTableWidget *tableWidget = new QTableWidget(10,5,ui->centralWidget);
- tableWidget->show();
-
-
- QStringList header;
- header<<"姓名"<<"年龄";
- tableWidget->setHorizontalHeaderLabels(header);
-
- tableWidget->setItem(0,0,new QTableWidgetItem(QIcon("D:/1.png"),"张三"));
- tableWidget->setItem(0,1,new QTableWidgetItem("33"));
- 5,获取内容/清除内容/关闭
- QString string = tableWidget->item(0,0)->text();
- qDebug() << string << endl;
-
- // 清除所有内容含表头// 清除内容不含表头
- tableWidget->clear();
-
- tableWidget->close();
- 6, 设置行高和列宽
- tableWidget->setColumnWidth(3,300);
- tableWidget->setRowHeight(3,30);
-
- 7,单元格选中行为
- // 选中整行
- tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
- // 选中单元格
- tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems);
- // 选中一列
- tableWidget->setSelectionBehavior(QAbstractItemView::SelectColumns);
-
- // 只允许选中一行
- tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
- // 允许选中多行(默认情况)
- tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
-
- 8,合并单元格
- QTableWidget *tableWidget = new QTableWidget(10,5,ui->centralWidget);
- tableWidget->show();
-
- QStringList header;
- header<<"姓名"<<"年龄";
- tableWidget->setHorizontalHeaderLabels(header);
-
- tableWidget->setItem(0,0,new QTableWidgetItem("张三"));
- tableWidget->setItem(0,1,new QTableWidgetItem("33"));
-
- tableWidget->setSpan(1,0,1,2);
-
- 9,信号
- (1)头函数
- public slots:
- void on_itemChanged(QTableWidgetItem *item);
- QTableWidget *tableWidget = new QTableWidget(10,5,ui->centralWidget);
- (2)建立表格建立槽函数
- tableWidget->show();
-
- QStringList header;
- header<<"姓名"<<"年龄";
- tableWidget->setHorizontalHeaderLabels(header);
-
- connect(tableWidget, SIGNAL(itemChanged(QTableWidgetItem *)), this, SLOT(on_itemChanged(QTableWidgetItem *)));
横向控件
要设置QTabWidget选项卡的字体方向,可以使用QTabWidget的setTabPosition()方法。通过传递Qt枚举值QTabWidget.east或QTabWidget.west作为参数,可以设置选项卡的字体方向为从左到右或从右到左。
- myTabWidget = QTabWidget()
- myTabWidget.setTabPosition(QTabWidget.west)
只要把tabPosition的属性改一下就可以了,改到你想要的位置,这时候如果有文字,文字的显示并不是竖排的,可以设置一下tab里的text的文字属性,具体语句可以查看一下帮助文档,也可以贴图,这里我直接通过设置Stylesheet样式表,直接重绘了一下tab标签页的样式,应用在tabBar上统一实现的。
正常设置QTabWidget->setTabPosition(QTabWidget::West);设置完竖向之后会发现QTabBar仍然是竖向的所以我们需要重绘一下Qtabbar 下面是重绘代码
- QTabWidget* tab = new QTabWidget();
- QPushButton* closeButton = new QPushButton;
- closeButton->setObjectName("closeButton");
- QPushButton* button = new QPushButton("button");
- tab->addTab(closeButton, "关闭");
- tab->addTab(button, "按钮");
- tab->setTabPosition(QTabWidget::West);//QTabWidget竖向
- tab->tabBar()->setStyle(new CustomTabStyle);//注意,设置上述代码风格 就可以实现QTabBar横向
- setCentralWidget(tab);
1,设置表头
- //设置列数
- ui->tableWidget->setColumnCount(3);
-
- QTableWidgetItem *item0 = new QTableWidgetItem;
- QTableWidgetItem *item1 = new QTableWidgetItem;
- QTableWidgetItem *item2 = new QTableWidgetItem;
-
- //设置显示内容
- item0->setText("编号");
- item1->setText("说明");
- item2->setText("数值");
-
- //设置水平表头
- ui->tableWidget->setHorizontalHeaderItem(0, item0);
- ui->tableWidget->setHorizontalHeaderItem(1, item1);
- ui->tableWidget->setHorizontalHeaderItem(2, item2);
QString str1= "学生姓名,男,2003-6-15,汉族,四川";
QString str2= str1.section(",",0,0); //str2 ="学生姓名",第一段的编号为 0
QString str2= str1.section(",",1,1); //str2 ="男"
QString str2= str1.section(",",0,1); //str2 ="学生姓名,男"
QString str2= str1.section(",",4,4); //str2 ="四川"
QString my=line.section('#', 2, 2);
qDebug() <<my;
// QString my="zhangfei";
QTableWidgetItem* name = new QTableWidgetItem(my);
ui->tableWidget->setItem(iRowCount, 0, name ); // 0 第一列
如何获取第一行第一列单元格的文本内容:
QTableWidgetItem *item = ui->tableWidget->item(, );
Qstring text = item->text();
qDebug() << text;
2,初始化数据
- //初始化数据
- //添加数据时,一定要设置行数,否则数据不会展示出来
- ui->tableWidget->setRowCount(2);
-
- QTableWidgetItem* name0 = new QTableWidgetItem;
- QTableWidgetItem* name1 = new QTableWidgetItem;
- QTableWidgetItem* age0 = new QTableWidgetItem;
- QTableWidgetItem* age1 = new QTableWidgetItem;
- QTableWidgetItem* code0 = new QTableWidgetItem;
- QTableWidgetItem* code1 = new QTableWidgetItem;
-
- name0->setText("张三");
- name1->setText("李四");
-
- age0->setText("28");
- age1->setText("26");
-
- code0->setText("1000");
- code1->setText("1001");
-
- //为指定的某行或某列设置item
- ui->tableWidget->setItem(0, 0, name0);
- ui->tableWidget->setItem(1, 0, name1);
-
- ui->tableWidget->setItem(0, 1, age0);
- ui->tableWidget->setItem(1, 1, age1);
-
- ui->tableWidget->setItem(0, 2, code0);
- ui->tableWidget->setItem(1, 2, code1);
3,插入数据
- //在末尾插入数据
- int curRow = ui->tableWidget->rowCount();
- ui->tableWidget->insertRow(curRow);
-
-
- QTableWidgetItem* name2 = new QTableWidgetItem;
- QTableWidgetItem* age2 = new QTableWidgetItem;
- QTableWidgetItem* code2 = new QTableWidgetItem;
-
- name2->setText("王五");
- age2->setText("19");
- code2->setText("1002");
-
-
- ui->tableWidget->setItem(curRow, 0, name2);
- ui->tableWidget->setItem(curRow, 1, age2);
- ui->tableWidget->setItem(curRow, 2, code2);
4,遍历数据
- //遍历数据
- QTableWidgetItem* item;
- QString str;
-
- for(int i = 0; i < ui->tableWidget->rowCount(); i++)
- {
- for(int j = 0; j < ui->tableWidget->columnCount(); j++)
- {
- item = ui->tableWidget->item(i, j);
- str = str + item->text() + " ";
- }
- }
-
- qDebug()<<"str = "<<str;
5,选中
(1)判断选中QTableWidgetItem行
- QList<QTableWidgetItem *> selectedItems = ui->tableWidget->selectedItems();
- //tableWidget->selectedItems();
- if (!selectedItems.isEmpty())
- {
- // 至少有一个项被选中
- //可以进行相应的处理
- qDebug()<<"aaaaaaaa";
- }
- else
- {
- // 没有任何项被选中
- qDebug()<<"bbbbbbbbbbbbbb";
- }
(2)主动选中QTableWidgetItem
-
- #include <QTableWidget>
- #include <QTableWidgetItem>
-
- // 假设你已经有一个QTableWidget对象叫做tableWidget
- // 添加一些行和列
- tableWidget->setRowCount(5);
- tableWidget->setColumnCount(3);
-
- // 创建一些项
- QTableWidgetItem *item1 = new QTableWidgetItem("Item 1");
- QTableWidgetItem *item2 = new QTableWidgetItem("Item 2");
- QTableWidgetItem *item3 = new QTableWidgetItem("Item 3");
- QTableWidgetItem *item4 = new QTableWidgetItem("Item 4");
- QTableWidgetItem *item5 = new QTableWidgetItem("Item 5");
-
- // 设置这些项到表格中
- tableWidget->setItem(0, 0, item1);
- tableWidget->setItem(1, 1, item2);
- tableWidget->setItem(2, 2, item3);
- tableWidget->setItem(3, 0, item4);
- tableWidget->setItem(4, 1, item5);
-
- // 选中第二行第一列的项
- tableWidget->setCurrentItem(tableWidget->item(1, 0))
-
-
-
-
-
- // 设置选中行
- int rowToSelect = 1; // 要选中的行的索引
- QTableWidgetItem* selectedItem = ui->tableWidget->item(rowToSelect, 0);
- ui->tableWidget->setCurrentItem(selectedItem);
- // 显示 QTableWidget
- ui->tableWidget->show();
-
-
- 或者
-
-
- // 设置选中行
- int rowToSelect = 1; // 要选中的行的索引
- QTableWidgetItem* selectedItem = tableWidget.item(rowToSelect, 0);
- tableWidget.setCurrentItem(selectedItem);
- // 显示 QTableWidget
- tableWidget.show();
(3)检测选中QTableWidgetItem行
每当QTableWidgetItem的状态发生变化时,itemChanged信号就会被发射,然后连接的lambda函数会被调用,检查该项是否被选中,并输出相关信息。确保你的QTableWidget的选择行为不是NoSelection或SingleSelection,否则即使项被选中也不会触发itemChanged信号。
- #include <QTableWidget>
- #include <QTableWidgetItem>
- #include <QHeaderView>
- #include <QDebug>
-
- // 假设你有一个QTableWidget的实例叫做tableWidget
-
- // 连接信号和槽
- QObject::connect(tableWidget, &QTableWidget::itemChanged,
- [](QTableWidgetItem *item){if(item->isSelected()){qDebug() << "Item selected: " << item->text();}});
-
- // 初始化tableWidget的其他部分...
-
- // 确保你已经设置了tableWidget的列数,否则它不会生成列头
- tableWidget->setColumnCount(/* some number */);
-
- // 如果你想要在选中项变化时做出响应,确保你没有设置
- // QTableWidget::ItemSelectionMode 为 NoSelection 或者 SingleSelection
- tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
6,删除选中行
int curRow = ui->tableWidget->currentRow();
ui->tableWidget->removeRow(curRow);
7,单元格发生切换时,发射两个信号
- //currentRow, currentColumn 当前点击的单元格
- //previousRow, previousColumn 先前具有焦点的单元格
- void QTableWidget::currentCellChanged(int currentRow, int currentColumn, int previousRow,int previousColumn)
-
- //current 当前点击的单元格
- //previous 先前具有焦点的单元格
- void QTableWidget::currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)
8,设置每一行最后一个单元格不留空格
ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
9,设置自适应大小
ui->tableWidget->horizontalHeader()>setSectionResizeMode(QHeaderView::ResizeToContents);
10,设置等宽
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
11,设置
- (1)获取行数和列数
- int QTableWidget::rowCount() const int QTableWidget::columnCount() const
- (2)获取当前单元格的行号和列号
- int QTableWidget::currentRow() const int QTableWidget::currentColumn() const
- (3)设置单元格内容是否可编辑
- void setEditTriggers(EditTriggers triggers)
- (4)设置选择方式是单元格选择还是行选择
- void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)
-
- QAbstractItemView::SelectItems //单元格选择模式
- QAbstractItemView::SelectRows //行选择模式
- QAbstractItemView::SelectColumns //列选择模式
all example
- //判断是否选择了文件
- if(!textfile.isNull())
- {
- QFile file(textfile);
- //当文件无法进行读操作的时候,将弹出信息框
- if(!file.open(QFile::ReadOnly|QFile::Text))
- {
- QMessageBox::warning(this,tr("Error"),tr("read file error:&1").arg(file.errorString()));
- return;
- }
- else
- {
- QString line;
- QTextStream in(&file); //用文件构造流
- line = in.readLine();//读取一行放到字符串里
- while(!line.isNull())//字符串有内容
- {
- // qDebug() << line.section('#', 1, 1);
- // qDebug() << line.section('#', 2, 2);
- // qDebug() << line.section('#', 3, 3);
- int RowCount = ui->tableWidget->rowCount();
- ui->tableWidget->insertRow(RowCount); //增加一行
- ui->tableWidget->setItem(iRowCount, 0, new QTableWidgetItem( line.section('#', 1, 1) )); // 1 第二列
- ui->tableWidget->setItem(iRowCount, 1, new QTableWidgetItem( line.section('#', 2, 2) )); // 1 第二列
- ui->tableWidget->setItem(iRowCount, 2, new QTableWidgetItem( line.section('#', 3, 3) ));
- if(line.section('#', 1, 1)!="")
- {
- ui->tableWidget->setItem(iRowCount, 3, new QTableWidgetItem( "500ms" ));
- }
- list_text.append( line.section('#', 4, 4) );
- iRowCount++;
- line=in.readLine();//循环读取下行
- }
- // QTableWidgetItem* item;
- //item = ui->tableWidget->item(1, 1);
- // 设置选中行
- int rowToSelect = 0; // 要选中的行的索引
- QTableWidgetItem* selectedItem = ui->tableWidget->item(rowToSelect, 0);
- //把选中的变为蓝色
- ui->tableWidget->setCurrentItem(selectedItem);
- // 显示 QTableWidget
- // ui->tableWidget->show();
-
-
- //jian cha jian ce
- QList<QTableWidgetItem *> selectedItems = ui->tableWidget->selectedItems();
- if (!selectedItems.isEmpty())
- {
- // 至少有一个项被选中
- //可以进行相应的处理
- qDebug()<<"aaaaaaaa";
- QTableWidgetItem* selectedItem = ui->tableWidget->item(2, 0);
- ui->tableWidget->setCurrentItem(selectedItem);
- ui->lineEdit->setText(list_text.at(2));
-
- //弹出界面设置参数
- // 设置数字对话框的标题和提示信息
- QString windowTitle = "数字参数设置";
- QString label = "请输入一个数字参数:";
-
- // 弹出数字输入对话框
- bool ok;
- int value = QInputDialog::getInt(nullptr, windowTitle, label, 0, 0, 100, 1, &ok);
-
- // 如果用户点击了OK,则处理输入的数字
- if (ok)
- {
- qDebug() << "用户输入的数字是:" << value;
- // 在这里处理value,例如保存到设置或者使用数字参数执行某些操作
- }
-
- }
- else
- {
- // 没有任何项被选中
- qDebug()<<"bbbbbbbbbbbbbb";
- }
-
- }
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。