Qt/C++學習系列之列表使用記錄
- 前言
- 列表的初始化
- 界面
- 初始化設置
- 名稱獲取
- 簡單設置
- 單元格存儲
- 總結
前言
列表的使用主要基于QTableWidget控件,同步使用QTableWidgetItem進行單元格的設置,最后可以使用QAxObject進行單元格的數據讀出將數據進行存儲。接下來就開始列表的設置和保存吧!
列表的初始化
界面
列表控件可以在界面上使用QTableWidget控件。
初始化設置
名稱獲取
// 獲取 ui 中的 QTableWidget
QTableWidget *tableWidget = ui->TabWid_Result;
- 獲取界面中的QTableWidget的名稱,為了后續初始化的使用。
簡單設置
tableWidget->setRowCount(n);
tableWidget->setColumnCount(m);
- 設置表格的行數和列數
tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
- 設置表格為不可編輯:一般是結果顯示中,不需要表格輸入,只是結果輸出進行設置。
tableWidget->horizontalHeader()->setVisible(false);
tableWidget->verticalHeader()->setVisible(true);
- 顯示默認的水平表頭
- 隱藏默認的垂直表頭
- 表頭的設置可具體實際的需要進行顯示或隱藏。
tableWidget->setColumnWidth(col, 80);
tableWidget->setRowHeight(row, 50);
- 設置每列寬度的像素
- 設置每行高度的像素。
QTableWidgetItem *emptyItem = new QTableWidgetItem("\\");
emptyItem->setBackground(Qt::lightGray);
tableWidget->setItem(i, j, emptyItem);
- 單元格填充使用QTableWidgetItem
- setBackground是來設置單元格的背景色
- 將單元格內容填充到單元格內
如何合并單元格!
tableWidget->setSpan(0, 0, 1, 12);
- void setSpan(int row, int column, int rowSpan, int columnSpan);:這里就是初始的行列到擴展的行列。
這里要注意,如果需要存儲,那么第三行一定要有數據內容,不然程序會崩!
單元格存儲
QAxObject* excel = new QAxObject();
- 定義表格。
QAxObject* workbooks = excel->querySubObject("Workbooks");
QAxObject* workbook = workbooks->querySubObject("Add()");
- 添加新的工作薄。
QAxObject* sheets = workbook->querySubObject("Worksheets");
QAxObject* sheet = sheets->querySubObject("Item(int)", 1); // 第一個工作表
- 獲取活動的第一個工作表
int romCount = ui->TabWid_Result->rowCount();
int colCount = ui->TabWid_Result->columnCount();
- 獲取總行數
- 獲取總列數
QAxObject* biaotou=sheet->querySubObject("Cells (int,int)", 1, 1);
biaotou->dynamicCall("SetValue(const QVariant&)", QVariant("xx"));
biaotou->setProperty("RowHeight", 30); // 設置寬度為20
biaotou->setProperty("Size", 20); // 設置寬度為20
- 這里是獲取單元格對象。
- dynamicCall設置單元格的內容。
- setProperty是根據不同的內容進行數據設置。
如何獲取實際列表值進行excel數據寫入呢?
QString str1=ui->TabWid_Result->item(i,j)->text();
QAxObject* danyuange3=sheet->querySubObject("Cells (int,int)", i, j);
danyuange3->dynamicCall("SetValue(const QVariant&)", QVariant(str1));
- 獲取表格內容,形成QString
- querySubObject:獲取 Excel 單元格對象
- 通過dynamicCall將內容寫入QAxObject中。
總結
本文主要簡單介紹了表格的簡單使用,并做了存儲設置。