最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Qt學記六: QTableWidget(表格控件)

2021-11-28 16:07 作者:風菩提樹  | 我要投稿

一.QT的QTableWidget簡介

?QTabWidget是Qt中的表格組件。在窗體上,放一個QTabWidget,可以在Property Editor里對其進行屬性設置,雙擊這個組件,可以打開一個編輯器,對其Colum、row和Item進行編輯。

表格第一行稱為行表頭,用于設置每一列的標題,第一列稱為列表頭,可以設置其標題(行號),一般缺省。行表頭和列表頭一般是不可編輯的。每個網(wǎng)格單元稱為一個單元格。每個單元格有一個行號、列號。在QTableWidget表格中,每一個單元格是一個QTableWidgetItem對象,可以設置文字內(nèi)容、字體等。

二、QTableWidget設置行表頭

設置垂直方向的表頭,即行表頭

void QTableWidget::setHorizontalHeaderLabels(const QStringList &labels)

設置水平方向的表頭,即列表頭

void QStandardItemModel::setVerticalHeaderLabels(const QStringList &labels)
參數(shù):
QStringList &labels:list容器中保存QSstring(字符串)


設置前,要用setColumnCount(int columns)設置好表格的列數(shù),如下:

三、初始化表格數(shù)據(jù)

? ? 在初始化時,表格要確定好填入數(shù)據(jù)的行數(shù),即設置表格行。使用setRowCount確定表格的行數(shù):

void QTableWidget::setRowCount(int rows)
參數(shù):rows:表格行的行數(shù)目。

? ? 在表格中,一個單元格就是一個QTableWidgetItem對象。在初始化數(shù)據(jù)時,new QTableWidgetItem;即是創(chuàng)建出一個單元格,然后設置QTableWidgetItem的數(shù)據(jù)或者文本屬性等,再使用QTableWidget的setItem成員函數(shù)來將QTableWidgetItem添加到QTableWidget中。

1.QTableWidgetItem的構造函數(shù):?

QTableWidgetItem(const QString &text, int type = Type)
參數(shù):
text:QTableWidgetItem的文本內(nèi)容是text,即單元格的內(nèi)容是text;

type:類型

2.setItem:將QTableWidgetItem放入到QTableWidget的第row行第column列中。

void QTableWidget::setItem(int row, int column, QTableWidgetItem *item)

代碼使用如下:


四、QTableWidgetItem的屬性設置函數(shù)

五、獲取當前單元格的數(shù)據(jù)

使用currentCellChanged槽函數(shù),根據(jù)column,row來使用獲得QTableWidgetItem的單元格,然后用QTableWidgetItem的text方法獲得數(shù)據(jù)。下面的槽函數(shù)是可以獲得當前行的列的數(shù)據(jù),而上面的槽函數(shù)僅僅可以獲得當前單元格以及上一個單元格的數(shù)據(jù)。

六、插入、添加、刪除行

void QTableWidget::insertRow(int row);

void QTableWidget::removeRow(int row);

插入行,刪除行都要依靠row號,因此需要使用

int QTableWidget::currentRow() const函數(shù)獲得當前所在的行號

如下


七、自動調(diào)整行高和列寬

八、設置表格內(nèi)容是否可編輯


九、其他屬性設置

1.行、列表頭是否顯示

2.選擇模式

十、案列之程序界面:

十、案列之設置行表頭

十、案列之初始化數(shù)據(jù)


十、案列之插入加入行

主要代碼塊

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTableWidgetItem>
#include <QFileDialog>
#include <ActiveQt/QAxObject>
#include <QDesktopServices>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
 ? ?Q_OBJECT

public:
 ? ?MainWindow(QWidget *parent = nullptr);
 ? ?~MainWindow();

private slots:
 ? ?void on_SetHeader_clicked();

 ? ?void on_InitForm_clicked();

 ? ?void on_InsertRow_clicked();

 ? ?void on_AddRow_clicked();

 ? ?void on_DeleteRow_clicked();

 ? ?void on_AutoDesignPosti_clicked();

 ? ?void on_checkBox_clicked(bool checked);

 ? ?void on_ShowFormRowHeader_clicked(bool checked);

 ? ?void on_ShowFormColuHeader_stateChanged(int arg1);



 ? ?void on_ROwSelect_clicked();

 ? ?void on_CellSelect_clicked();



 ? ?void on_tableWidget_currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous);





private:
 ? ?Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
 ? ?: QMainWindow(parent)
 ? ?, ui(new Ui::MainWindow)
{
 ? ?ui->setupUi(this);

}

MainWindow::~MainWindow()
{
 ? ?delete ui;
}


void MainWindow::on_SetHeader_clicked()
{
 ? ?QTableWidgetItem *headerItem;
 ? ?QStringList headerText;
 ? ?headerText<<"姓名"<<"性別"<<"年齡"<<"是否是黨員"<<"new";
 ? ?ui->tableWidget->setColumnCount(headerText.count());
 ? ?//直接設置列表頭為headerText中的內(nèi)容
 ? //ui->tableWidget->setHorizontalHeaderLabels(headerText);
 ? ?//為每個行表頭的單元格設置屬性,通過setHorizontalHeaderItem將QTabWidgetItem,
 ? //將headerItem添加到列表頭只能。
 ? ?for(int i=0; i < ui->tableWidget->columnCount(); i++)
 ? ?{
 ? ? ? ?headerItem = new QTableWidgetItem(headerText.at(i));
 ? ? ? ?headerItem->setTextColor(Qt::blue);
 ? ? ? ?ui->tableWidget->setHorizontalHeaderItem(i,headerItem);
 ? ?}
}
//初始化數(shù)據(jù)
void MainWindow::on_InitForm_clicked()
{
 ? ?//只清除工作區(qū),不清除表頭
 ? ?ui->tableWidget->clearContents();
 ? ?//設置 表格的行數(shù)
 ? ?ui->tableWidget->setRowCount(2);
 ? ?QTableWidgetItem *item;
 ? ?// 新建一個單元格,數(shù)據(jù)為哥,在第0行第0列的單元格中
 ? ?item = new QTableWidgetItem("哥",1000);
 ? ?//設置單元格垂直、水平居中
 ? ?item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
 ? ?ui->tableWidget->setItem(0,0,item);

 ? ?item = new QTableWidgetItem("男",1000);
 ? ?item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
 ? ?ui->tableWidget->setItem(0,1,item);

 ? ?item = new QTableWidgetItem(QString::number(31),1001);
 ? ?item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
 ? ?ui->tableWidget->setItem(0,2,item);

 ? ?item = new QTableWidgetItem("是",1000);
 ? ?item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
 ? ?//設置單元格的勾選狀態(tài),會在單元格顯示QChexBox組件
 ? ?//Qt::Checked勾選狀態(tài),Qt::UnChecked不勾選狀態(tài)
 ? ?item->setCheckState(Qt::Checked);
 ? ?ui->tableWidget->setItem(0,3,item);
}
//插入行
void MainWindow::on_InsertRow_clicked()
{
 ? ?QTableWidgetItem *item;
 ? ?//獲取當前所在的行數(shù)
 ? ?int row = ui->tableWidget->currentRow();
 ? ?//不會自動創(chuàng)建QTableWidgetItem
 ? ?ui->tableWidget->insertRow(row);
 ? ?item = new QTableWidgetItem("新插入",1000);
 ? ?ui->tableWidget->setItem(row,0,item);
}
//加入行
void MainWindow::on_AddRow_clicked()
{
 ? ?QTableWidgetItem *item;
 ? ?//獲取當前所在的行數(shù)
 ? ?int row = ui->tableWidget->rowCount();
 ? ?//不會自動創(chuàng)建QTableWidgetItem
 ? ?ui->tableWidget->insertRow(row);
 ? ?item = new QTableWidgetItem("新加入",1000);
 ? ?ui->tableWidget->setItem(row,0,item);
}
//刪除行
void MainWindow::on_DeleteRow_clicked()
{
 ? ?int row = ui->tableWidget->currentRow();
 ? ?//刪除當前行以及Item
 ? ?ui->tableWidget->removeRow(row);
}
//自動調(diào)整
void MainWindow::on_AutoDesignPosti_clicked()
{
 ? ?//自動調(diào)整列寬,使其適應其內(nèi)容
 ? ?ui->tableWidget->resizeColumnsToContents();
 ? ?//自動調(diào)整行高,使其適應其內(nèi)容
 ? ?ui->tableWidget->resizeRowsToContents();
}
//是否可編輯
void MainWindow::on_checkBox_clicked(bool checked)
{
 ? ?if(checked)
 ? ?{
 ? ? ? ?//雙擊或獲取焦點單擊進入編輯模式
 ? ? ? ui->tableWidget->setEditTriggers(QAbstractItemView::DoubleClicked
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|QAbstractItemView::SelectedClicked);
 ? ?}
 ? ?else
 ? ?{
 ? ? ? ?//不能編輯
 ? ? ? ?ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
 ? ?}

}

void MainWindow::on_ShowFormRowHeader_clicked(bool checked)
{ ? ?//是否顯示行表頭
 ? ?//verticalHeader()獲取行表頭,setvisible()設置是否可見,true可見
 ? ?ui->tableWidget->horizontalHeader()->setVisible(checked);

}

void MainWindow::on_ShowFormColuHeader_stateChanged(int arg1)
{
 ? ?//是否顯示列表頭
 ? ?//horizontalHeader()獲取列表頭,setvisible()設置是否可見,true可見
 ? ? ui->tableWidget->verticalHeader()->setVisible(arg1);
}



void MainWindow::on_ROwSelect_clicked()
{
 ? ?//設置選擇模式為行選擇模式
 ? ?ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
}

void MainWindow::on_CellSelect_clicked()
{
 ? ?//設置選擇模式為單元格選擇模式
 ? ?ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems);
}


//獲取單元格的數(shù)據(jù)
void MainWindow::on_tableWidget_currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)
{
 ? ?if(current == NULL)return;
 ? ?ui->CellFormData->setText(current->text());
}


謝謝閱讀,點個贊唄。


Qt學記六: QTableWidget(表格控件)的評論 (共 條)

分享到微博請遵守國家法律
黑山县| 诏安县| 衡东县| 湘潭市| 宣城市| 濮阳市| 日照市| 平舆县| 衡阳县| 瓮安县| 山东省| 临朐县| 洛隆县| 洱源县| 万安县| 遂昌县| 康乐县| 雷山县| 泽库县| 巴南区| 盘锦市| 辽中县| 射洪县| 东莞市| 涟水县| 射洪县| 丁青县| 乌兰察布市| 靖州| 铜鼓县| 瓮安县| 曲麻莱县| 灵丘县| 瓮安县| 保亭| 河西区| 营口市| 新田县| 安西县| 苏尼特右旗| 淳安县|