QT tableWidget詳細分析

一.定義

QTableWidget是一個用于顯示表格數據的Qt控件,它是一個基于Qt Model/View框架的視圖組件。QTableWidget提供了一種簡單的方式來展示和編輯表格數據,用戶可以通過添加行、列和單元格來構建一個完整的數據表格。

下面是一些QTableWidget的主要特點和功能:

  1. 顯示數據:QTableWidget可以顯示表格形式的數據,用戶可以通過設置行數、列數和單元格內容來展示具體的數據。

  2. 編輯數據:用戶可以在QTableWidget中直接編輯單元格的內容,以便對數據進行修改。

  3. 行列操作:用戶可以通過API添加、刪除、移動行列,來靈活地管理數據表格的結構。

  4. 布局調整:用戶可以通過設置行高、列寬、單元格合并等方式來調整數據表格的布局。

  5. 選中操作:用戶可以通過鼠標或鍵盤操作來選中單元格、行或列,以便進行相關的操作。

  6. 樣式設置:用戶可以通過設置表格的樣式、顏色、字體等屬性來美化表格的顯示效果。

  7. 數據導出:QTableWidget支持將表格數據導出為文件(如CSV格式),以便用戶進行其他處理或分享數據。

二.代碼示例

#include <QtWidgets>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 創建一個QTableWidget對象,并設置行數和列數QTableWidget tableWidget;tableWidget.setRowCount(3);tableWidget.setColumnCount(2);// 設置表頭QStringList headers;headers << "Name" << "Age";tableWidget.setHorizontalHeaderLabels(headers);// 向表格中添加數據QTableWidgetItem *item1 = new QTableWidgetItem("Alice");tableWidget.setItem(0, 0, item1);QTableWidgetItem *item2 = new QTableWidgetItem("25");tableWidget.setItem(0, 1, item2);QTableWidgetItem *item3 = new QTableWidgetItem("Bob");tableWidget.setItem(1, 0, item3);QTableWidgetItem *item4 = new QTableWidgetItem("30");tableWidget.setItem(1, 1, item4);QTableWidgetItem *item5 = new QTableWidgetItem("Eve");tableWidget.setItem(2, 0, item5);QTableWidgetItem *item6 = new QTableWidgetItem("22");tableWidget.setItem(2, 1, item6);// 顯示表格tableWidget.show();return app.exec();
}

三.部分功能介紹

1.設置行高

#include <QtWidgets>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 創建一個QTableWidget對象,并設置行數和列數QTableWidget tableWidget;tableWidget.setRowCount(3);tableWidget.setColumnCount(2);// 設置表格每一行的高度tableWidget.verticalHeader()->setDefaultSectionSize(50); // 設置行高為50像素// 添加數據到表格中// 顯示表格tableWidget.show();return app.exec();
}

2.設置自適應大小

setSizeAdjustPolicy()方法是用于設置QTableWidget的自適應策略的方法。可以通過該方法設置表格的大小自適應方式,以確保表格可以根據內容調整大小。

以下是該方法的常用參數:

  • QTableWidget::AdjustToContents:根據內容自動調整表格大小。
  • QTableWidget::AdjustToContentsOnFirstShow:第一次顯示時根據內容自動調整表格大小。
  • QTableWidget::AdjustToContentsOnResize:調整表格大小以適應內容變化。
  • QTableWidget::Fixed:固定大小。
#include <QtWidgets>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 創建一個QTableWidget對象,并設置行數和列數QTableWidget tableWidget;tableWidget.setRowCount(3);tableWidget.setColumnCount(2);// 設置表格每一行的高度tableWidget.verticalHeader()->setDefaultSectionSize(50); // 設置行高為50像素// 設置表格的自適應策略tableWidget.setSizeAdjustPolicy(QTableWidget::AdjustToContents);// 添加數據到表格中// 顯示表格tableWidget.show();return app.exec();
}

3.插入數據

Qt中的 QTableWidget 類提供了方便的方法來插入和操作表格中的行和列,而您無需手動設置行號。當您向 QTableWidget 插入行時,會自動更新當前的行號,并且您可以通過該行號來訪問和操作該行的數據。

#include <QtWidgets>int main(int argc, char *argv[])
{QApplication app(argc, argv);// 創建 QTableWidgetQTableWidget tableWidget;tableWidget.setColumnCount(2);// 插入一行并設置數據tableWidget.insertRow(0);tableWidget.setItem(0, 0, new QTableWidgetItem("Row 1, Column 1"));tableWidget.setItem(0, 1, new QTableWidgetItem("Row 1, Column 2"));// 插入另一行并設置數據tableWidget.insertRow(1);tableWidget.setItem(1, 0, new QTableWidgetItem("Row 2, Column 1"));tableWidget.setItem(1, 1, new QTableWidgetItem("Row 2, Column 2"));// 顯示 QTableWidgettableWidget.show();return app.exec();
}

4.設置文字居中

要設置表格單元格中的文字居中,可以使用setAlignment()方法來指定單元格的對齊方式。

from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget
from PyQt5.QtCore import Qtapp = QApplication([])tableWidget = QTableWidget()
tableWidget.setRowCount(2)
tableWidget.setColumnCount(2)tableWidget.setItem(0, 0, QTableWidgetItem("Item 1"))
tableWidget.setItem(0, 1, QTableWidgetItem("Item 2"))
tableWidget.setItem(1, 0, QTableWidgetItem("Item 3"))
tableWidget.setItem(1, 1, QTableWidgetItem("Item 4"))# 設置單元格文字居中
for i in range(tableWidget.rowCount()):for j in range(tableWidget.columnCount()):item = tableWidget.item(i, j)item.setTextAlignment(Qt.AlignCenter)widget = QWidget()
layout = QVBoxLayout()
layout.addWidget(tableWidget)
widget.setLayout(layout)widget.show()app.exec_()

5.設置是否可編輯

要設置Qt TableWidget中的單元格為可編輯或不可編輯模式,可以使用setEditTriggers()方法。以下是一個示例代碼,演示如何設置單元格為可編輯

from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget, QAbstractItemViewapp = QApplication([])tableWidget = QTableWidget()
tableWidget.setRowCount(2)
tableWidget.setColumnCount(2)tableWidget.setItem(0, 0, QTableWidgetItem("Editable"))
tableWidget.setItem(0, 1, QTableWidgetItem("Not Editable"))
tableWidget.setItem(1, 0, QTableWidgetItem("Editable"))
tableWidget.setItem(1, 1, QTableWidgetItem("Not Editable"))# 設置第一列為可編輯模式,第二列為不可編輯模式
tableWidget.setEditTriggers(QAbstractItemView.DoubleClicked)  # 設置雙擊可編輯widget = QWidget()
layout = QVBoxLayout()
layout.addWidget(tableWidget)
widget.setLayout(layout)widget.show()app.exec_()

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14583.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14583.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14583.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

The Missing Semester of Your CS Education(計算機教育中缺失的一課)

Shell 工具和腳本(Shell Tools and Scripting) 一、shell腳本 1.1、變量賦值 在bash中為變量賦值的語法是foobar&#xff0c;訪問變量中存儲的數值&#xff0c;其語法為 $foo。 需要注意的是&#xff0c;foo bar &#xff08;使用空格隔開&#xff09;是不能正確工作的&…

網工內推 | 香港移動,10年以上數通經驗,CCIE,5W-6W

01 香港移動招聘 &#x1f537;招聘崗位&#xff1a;網絡工程師 &#x1f537;崗位要求&#xff1a; 需要有10年及以上數通經驗&#xff0c;有CCIE 證書&#xff0c;懂技術管理&#xff0c;溝通暢通 &#x1f537;語言要求&#xff1a; 粵語英語 &#x1f537;薪資&#xff1…

基于灰狼優化算法優化RBF(GWO-RBF)的數據回歸預測(多輸入多輸出)

代碼原理及流程 基于灰狼優化算法優化多輸入多輸出&#xff08;MIMO&#xff09;的RBF神經網絡的數據回歸預測&#xff0c;可以采取以下步驟&#xff1a; 1. 數據準備&#xff1a;準備包含多個輸入特征和多個輸出目標的數據集&#xff0c;確保數據已經經過預處理和歸一化。 …

TCP - 半連接隊列和全連接隊列

目錄 一、半連接隊列和全連接隊列的概念 二、全連接隊列溢出 三、半連接隊列溢出 一、半連接隊列和全連接隊列的概念 1. 半連接隊列&#xff1a;服務端收到客戶端發送的 SYN 包時&#xff0c;內核會將該連接加入半連接 SYN 隊列&#xff0c;并向客戶端返回響應 2. 全連接隊…

CSS基礎(第二天)

Emmet語法 快速生成HTML結構語法 1. 生成標簽 直接輸入標簽名 按tab鍵即可 比如 div 然后tab 鍵&#xff0c; 就可以生成 <div></div> 2. 如果想要生成多個相同標簽 加上 * 就可以了 比如 div*3 就可以快速生成3個div 3. 如果有父子級關系的標簽&#xff0c;可以…

算法刷題筆記 數的范圍(C++實現)(二分法重要例題)

文章目錄 題目描述題目思路題目代碼&#xff08;C&#xff09;題目感想 題目描述 給定一個按照升序排列的長度為n的整數數組&#xff0c;以及q個查詢。對于每個查詢&#xff0c;返回一個元素k的起始位置和終止位置&#xff08;位置從0開始計數&#xff09;。如果數組中不存在該…

Docker【2】iptables 錯誤解決

iptables 錯誤解決 問題說明問題分析解決步驟1. 確保 iptables 模塊已加載2. 檢查和重啟 docker 服務3. 檢查 firewalld 狀態4. 重置 iptables 規則5. 查看和更新 Docker 配置 總結 問題說明 執行的 docker 命令如下&#xff0c;啟動 nginx 并設置宿主機端口 (8080) 與容器端口…

學習Uni-app開發小程序Day25

這一章學習了觸底加載更多阻止無效的網絡請求、分類列表存入Storage在預覽頁面讀取緩存展示、通過swiper的事件實現真正的壁紙預覽及切換 觸底加載更多阻止無效的網絡請求、load-more樣式的展現 前面已經學習了當列表觸底后&#xff0c;會繼續加載&#xff0c;當到最后一層后…

自動化測試--利用pytest實現整條業務鏈路測試

? 概述 前面一章講解了單個接口的測試&#xff0c;但是實際項目中&#xff0c;因為權限和登錄狀態的限制&#xff0c;大部分接口沒辦法直接訪問到&#xff0c;這時候我們想訪問到一個系統的接口&#xff0c;就需要模擬用戶登錄拿到用戶的token和所擁有的權限之后再將這些信息…

vivado2020.2創建hls仿真工程實現led閃爍

下載vivado2020.2后會有這個出現在桌面 點擊進入創建工程&#xff0c;這里注意不要有前面的\我再復制的時候復制錯了導致創建失敗 按f光標就會跳轉到下一個f開頭的函數處&#xff0c;要查找其他函數也同理 生成了一個synthesis summary文件 找到目錄下生成的.v文件 an 點…

Pod進階——資源限制以及探針檢查

目錄 一、資源限制 1、資源限制定義&#xff1a; 2、資源限制request和limit資源約束 3、Pod和容器的資源請求和限制 4、官方文檔示例 5、CPU資源單位 6、內存資源單位 7、資源限制實例 ①編寫yaml資源配置清單 ②釋放內存&#xff08;node節點&#xff0c;以node01為…

【知識蒸餾】多任務模型 logit-based 知識蒸餾實戰

一、什么是邏輯&#xff08;logit&#xff09;知識蒸餾 Feature-based蒸餾原理是知識蒸餾中的一種重要方法&#xff0c;其關鍵在于利用教師模型的隱藏層特征來指導學生模型的學習過程。這種蒸餾方式旨在使學生模型能夠學習到教師模型在特征提取和表示方面的能力&#xff0c;從…

有些錯誤,常犯常新、常新常犯:記錄一個使用element-plus的tooltip組件的錯誤

使用element-plus的tooltip組件&#xff0c;最開始的寫法是這樣的&#xff1a; <el-tooltipclass"box-item"effect"dark"content"tooltip content" ><el-button v-if"isDisabled" :underline"false" type"pr…

持續總結中!2024年面試必問 20 道 Redis面試題(五)

上一篇地址&#xff1a;持續總結中&#xff01;2024年面試必問 20 道 Redis面試題&#xff08;四&#xff09;-CSDN博客 九、Redis的同步機制了解么&#xff1f; Redis 的同步機制是其復制策略的核心部分&#xff0c;確保數據在主節點&#xff08;master&#xff09;和從節點…

【C語言】程序員自我修養之文件操作

【C語言】程序員自我修養之文件操作 &#x1f525;個人主頁&#xff1a;大白的編程日記 &#x1f525;專欄&#xff1a;C語言學習之路 文章目錄 【C語言】程序員自我修養之文件操作前言一.文件介紹1.1為什么使用文件1.2文件分類1.3二進制文件和文本文件 二.文件的打開和關閉2.…

桌面藏線大法

1有線改無線&#xff1a; 藍牙鼠標 藍牙鍵盤 藍牙耳機 2將排插貼到桌子底下 購物軟件上搜 3斷舍離 不要的電子產品統統扔掉 4 洞洞板和掛鉤 這個不用介紹了

爬蟲基本原理及requests庫用法

文章目錄 一、爬蟲基本原理1、什么是爬蟲2、爬蟲的分類3、網址的構成4、爬蟲的基本步驟5、動態【異步】頁面和靜態【同步】頁面6、請求頭 二、requests基本原理及使用1、chrome 抓包按鈕詳解1.1 Elements1.2 元素定位器1.3 Network1.4 All1.5 XHR1.6 Preserve log1.7 手機模式1…

暴雨信息液冷計算解決方案亮相CCIG 2024

5月24日&#xff0c;2024中國圖象圖形大會&#xff08;CCIG&#xff09;在陜西西安正式開幕。作為涵蓋圖像圖形各專業領域的綜合性的全國性學術會議&#xff0c;CCIG面向開放創新、交叉融合的發展趨勢&#xff0c;為圖像圖形相關領域的專家學者和產業界的同仁&#xff0c;搭建了…

Java+Spring+ MySQL + MyCat云HIS有哪些優勢?智慧醫療云(HIS)低成本與安全保障的完美結合

JavaSpring MySQL MyCat云HIS有哪些優勢&#xff1f;智慧醫療云(HIS)低成本與安全保障的完美結合 云HIS的優點包括節省成本、便捷高效、穩妥安全等。通過云HIS&#xff0c;醫療機構無需在本地建立機房、購買服務器和應用軟件&#xff0c;降低了硬件和人力成本。同時&#xff0…

虛擬化介紹

虛擬化介紹 概述概念特點優勢實現手段 虛擬化架構概述寄居虛擬化架構裸金屬虛擬化架構操作系統虛擬化架構混合虛擬化架構幾種虛擬化架構的比較虛擬化架構與虛擬化技術的關系 虛擬化技術分類服務器虛擬化技術分類 存儲虛擬化技術分類網絡虛擬化技術分類 服務器虛擬化技術處理器虛…