QT 使用QtableWidget 写表格
设计:
效果:
代码 .cpp:
#include "screenmanagement.h"
#include "ui_screenmanagement.h"
#include <QTableWidgetItem>
#include <QDebug>
ScreenManagement::ScreenManagement(QWidget *parent) :
QWidget(parent),
ui(new Ui::ScreenManagement)
{
ui->setupUi(this);
//自定义表格的尺寸和字体大小
// ui->tableWidget->resize(900,350);
ui->tableWidget->setFont(QFont("微软雅黑",20));
ui->tableWidget->setColumnCount(5);//设置列数
ui->tableWidget->setRowCount(3);//设置行数
ui->tableWidget->setShowGrid(false); //不显示网格线
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //设置整行选择
ui->tableWidget->setMouseTracking(true); //开启捕获鼠标功能
ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); //禁止编辑表格
ui->tableWidget->verticalHeader()->setVisible(false);//纵向表头可视化
ui->tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section {""background-color:#383838;}");
ui->tableWidget->setStyleSheet("background-color:#1a1a1a;color:#fff;gridline-color: rgb(0, 0, 0)");//设置当前颜色
// this->horizontalHeader()->setDefaultSectionSize(80); //设置默认宽度
ui->tableWidget->verticalHeader()->setDefaultSectionSize(30); //设置一行默认高度
// ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//自适应所有列,让它布满空间,拉伸无效
// ui->tableWidget->horizontalHeader()->resizeSections(QHeaderView::Stretch);//列可以拉伸
ui->tableWidget->horizontalHeader()->setStretchLastSection(true);//拉伸最后一列,让它填满剩余的空白
ui->tableWidget->setAlternatingRowColors(true);// 设置隔行背景色
ui->tableWidget->setPalette(QPalette(QColor(70,70,70)));//参数还可写成QPalette(Qt::blue) QPalette(QColor(36,36,36))
ui->tableWidget->setStyleSheet("selection-background-color:#0e4b72"); //设置选中行颜色
// QString qssTV = "QTableWidget::item:hover{background-color:rgb(92,188,227,200)}"
// "QTableWidget::item:selected{background-color:red}"
// "QHeaderView::section{background-color:#383838;}"
// "QTableWidget{background-color:#383838;border:none;}";
// ui->tableWidget->setStyleSheet(qssTV);
//设置表格中每一行的表头
QStringList header;
header<<"1"<<"2"<<"3"<<"4"<<"5";
ui->tableWidget->setHorizontalHeaderLabels(header);
for (int i=0; i<3; i++)
for (int j=0; j<5;j++)
{
QTableWidgetItem *item = new QTableWidgetItem(QIcon(":/image/search.png"), "td");
ui->tableWidget->setItem(i,j,item);
}
// QLabel *l1 = new QLabel(); //创建lable
// l1->setPixmap(QPixmap(":/image/search.png")); //加载图片
pixmap = pixmap.scaled(15, 15, Qt::KeepAspectRatio, Qt::SmoothTransformation); // 按比例缩放
// l1->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter);//设置居中
// //设置表格中每一行的内容
// tableWidget->setItem(0,0,new QTableWidgetItem("1"));
// tableWidget->setCellWidget(0,1,l1);
// tableWidget->setItem(0,2,new QTableWidgetItem("3"));
// tableWidget->setItem(1,0,new QTableWidgetItem("1"));
// tableWidget->setItem(1,1,new QTableWidgetItem("http://c.biancheng.net/qt/"));
// tableWidget->setItem(1,2,new QTableWidgetItem("2"));
// tableWidget->setItem(2,0,new QTableWidgetItem("C++1"));
// tableWidget->setItem(2,1,new QTableWidgetItem("http://c.biancheng.net/cplus/"));
// QTableWidgetItem *btItem = new QTableWidgetItem(); //靶体
// btItem->setTextAlignment(Qt::AlignCenter); //文字居中
// btItem->setIcon(QIcon(":/image/search.png"));
// btItem->setText("红旗飘飘");
// tableWidget->setItem(2,2,btItem);
}
ScreenManagement::~ScreenManagement()
{
delete ui;
}
.h:
#ifndef SCREENMANAGEMENT_H
#define SCREENMANAGEMENT_H
#include <QWidget>
#include <QHeaderView>
namespace Ui {
class ScreenManagement;
}
class ScreenManagement : public QWidget
{
Q_OBJECT
public:
explicit ScreenManagement(QWidget *parent = nullptr);
~ScreenManagement();
private:
Ui::ScreenManagement *ui;
};
#endif // SCREENMANAGEMENT_H
这个是一个表格,如果我有多个表格,又不想每次都初始化配置项,那我可以封装一个类,在需要的时候调用