日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt 自定义tablewidget(背景色,标题箭头)

發布時間:2024/1/8 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt 自定义tablewidget(背景色,标题箭头) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

/********QTableWidget*********/ QHeaderView{ /*設置標題(包括垂直+水平的)*/font-size: 19px; /*11榜*/border: 1px solid rgb(255, 255, 255);/* border-bottom: 2px solid rgb(35, 100, 224); 下邊框深藍色*/background: rgb(100, 188, 238); /*背景淺藍色*/ min-height:40px;} QHeaderView::section:horizontal { /*設置標題(水平的)*/border: 1px solid rgb(255, 255, 255); /*白色間隔*/border-bottom: 0px; /*下邊框不需要顏色*/color: rgb(2, 65, 132);background: transparent;padding-left: 2px;min-width:60px; } QHeaderView::section:horizontal:hover { /*設置鼠標停留狀態*/color: white; /*字體白色*/background: rgb(11,82,202); /*背景深藍色*/ } QHeaderView::section:horizontal:pressed { /*設置鼠標按下狀態*/color: white;background: rgb(39,106,220); /*背景深藍色減一點*/ } QHeaderView::section:vertical { /*設置標題(垂直的)*/border: 1px solid rgb(255, 255, 255); /*白色間隔*/border-bottom: 0px; /*下邊框不需要顏色*/color: rgb(2, 65, 132);background: rgb(255, 255, 255,180);padding-top: 3px;min-width:60px;} QHeaderView::section:vertical:hover { /*設置鼠標停留狀態*/color: white; /*字體白色*/background: rgb(11,82,202); /*背景深藍色*/ } QHeaderView::section:vertical:pressed { /*設置鼠標按下狀態*/color: white;background: rgb(39,106,220); /*背景深藍色減一點*/ }QHeaderView::up-arrow { /*設置向上排序指針*/width: 13px;height: 11px;padding-right: 10px; /*設置右內邊距*/image: url(:/arrow_up.png);subcontrol-position: center right; } QHeaderView::up-arrow:hover, QHeaderView::up-arrow:pressed {} QHeaderView::down-arrow { /*設置向下排序指針*/width: 13px;height: 11px;padding-right: 10px;image: url(:/arrow_down.png);subcontrol-position: center right; } QHeaderView::down-arrow:hover, QHeaderView::down-arrow:pressed {} QTableWidget,QTableView {font-size: 17px; /*10榜*/ color : rgb(1,37,116); border: 2px solid rgb(100, 188, 238); background: rgb(248,248,248);gridline-color: rgb(196,226,255); text-align: center; outline:0px; /*禁止焦點*/} QTableWidget::item,QTableView::item { /*設置視圖項*/padding-left: 5px;padding-right: 5px;border: none; background: rgba(251,251,253,200);/* border-right: 1px solid rgb(100, 188, 238); *//*border-bottom: 1px solid rgb(100, 188, 238);*/ } QTableWidget::item:selected,QTableView::item:selected { /*設置選中的視圖項*/background: rgba(207,230,253,200);color : rgb(1,37,116); }QTableView::item:alternate:!selected,QTableWidget::item:alternate:!selected,QListView::item:alternate:!selected { background: rgb(250,250,250); }QTableView::item:!alternate:!selected,QTableWidget::item:!alternate:!selected { background: rgb(240,247,254); }

效果

?

1.QTableWidget不能在mainwindow中隨主窗口的大小變化?

??解決:在表格外部添加布局。

??代碼:tableWidget?=?new?QTableWidget;

?????????tableWidget?->setObjectName(QString::fromUtf8("tableWidget"));

?????????QVBoxLayout?*verticalLayout;

?????????verticalLayout->addWidget(tableWidget?);

2.將表格變為禁止編輯:

??tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);

??(參數含義:QAbstractItemView.NoEditTriggers--不能對表格內容進行修改

??????????????QAbstractItemView.CurrentChanged--任何時候都能對單元格修改

??????????????QAbstractItemView.DoubleClicked--雙擊單元格

??????????????QAbstractItemView.SelectedClicked--單擊已選中的內容?

??????????????QAbstractItemView.EditKeyPressed--

??????????????QAbstractItemView.AnyKeyPressed--按下任意鍵就能修改

??????????????QAbstractItemView.AllEditTriggers--以上條件全包括)

3.設置表格為整行選擇

??tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);??//整行選中的方式

??(參數含義:AbstractItemView.SelectItems--選中單個單元格

??????????????QAbstractItemView.SelectRows--選中一行

??????????????QAbstractItemView.SelectColumns--選中一列)

4.單個選中和多個選中的設置:

??tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);??//設置為可以選中多個目標

?(參數含義:QAbstractItemView.NoSelection--不能選擇

?????????????QAbstractItemView.SingleSelection--選中單個目標

?????????????QAbstractItemView.MultiSelection--選中多個目標

??QAbstractItemView.ExtendedSelection/QAbstractItemView.ContiguousSelection?的區別不明顯,主要功能是正常情況下是單選,但按下Ctrl或Shift鍵后,可以多選)

5.表格表頭的顯示與隱藏

??對于水平或垂直方法的表頭,可以用以下方式進行?隱藏/顯示?的設置:

??tableWidget->verticalHeader()->setVisible(false);???//隱藏列表頭??

??tableWidget->horizontalHeader()->setVisible(false);?//隱藏行表頭??

??注意:需要?#include?<QHeaderView>

6.對表頭文字的字體、顏色進行設置?

??QTableWidgetItem?*columnHeaderItem0?=?tableWidget->horizontalHeaderItem(0);?//獲得水平方向表頭的Item對象??

??columnHeaderItem0->setFont(QFont("Helvetica"));?//設置字體??

??columnHeaderItem0->setBackgroundColor(QColor(0,60,10));?//設置單元格背景顏色??

??columnHeaderItem0->setTextColor(QColor(200,111,30));?//設置文字顏色

??注意:需要?#include?<QHeaderView>

7.在單元格里加入控件:

???QComboBox?*comBox?=?new?QComboBox();

???comBox->addItem("Y");

???comBox->addItem("N");

???tableWidget->setCellWidget(0,2,comBox);?

8.單元格中添加圖片:

??tableWidget->setItem(row,?0,?new?QTableWidgetItem(QIcon(":/new/images/kingdemo.ico"),tr("")));

9設置單元格字體顏色、背景顏色和字體字符:

??QTableWidgetItem?*item?=?new?QTableWidgetItem("Apple");

??item->setBackgroundColor(QColor(0,60,10));

??item->setTextColor(QColor(200,111,100));

??item->setFont(QFont("Helvetica"));

??tableWidget->setItem(0,3,item);

??另:如果需要對所有的單元格都使用這種字體,則可以使用??tableWidget->setFont(QFont("Helvetica"));

10.設置單元格內文字的對齊方式

?水平對齊方式有:

?Constant?Value?Description

?Qt.AlignLeft?0x0001?Aligns?with?the?left?edge.

?Qt.AlignRight?0x0002?Aligns?with?the?right?edge.

?Qt.AlignHCenter?0x0004?Centers?horizontally?in?the?available?space.

?Qt.AlignJustify?0x0008?Justifies?the?text?in?the?available?space.

?垂直對齊方式:

?Constant?Value?Description

?Qt.AlignTop?0x0020?Aligns?with?the?top.

?Qt.AlignBottom?0x0040?Aligns?with?the?bottom.

?Qt.AlignVCenter?0x0080?Centers?vertically?in?the?available?space.

?如果兩種都要設置,只要用?Qt.AlignHCenter?|??Qt.AlignVCenter?的方式即可

11.合并單元格:

??tableWidget->setSpan(0,?0,?3,?1)??#?其參數為:?要改變單元格的1行數、2列數,要合并的3行數、4列數

12.設置單元格的大小

??首先,可以指定某個行或者列的大小

???tableWidget->setColumnWidth(3,200);

???tableWidget->setRowHeight(3,60);

還可以將行和列的大小設為與內容相匹配

???tableWidget->resizeColumnsToContents();

???tableWidget->resizeRowsToContents();

13.獲得單擊單元格的內容

??通過實現?itemClicked?(QTableWidgetItem?*)?信號的槽函數,就可以獲得鼠標單擊到的單元格指針,進而獲得其中的文字信息

connect(tableWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(getItem(QTreeWidgetItem*,int)));

//將itemClicked信號與函數getItem綁定

14.QTableWidget要調整表格行寬主要涉及以下函數

??tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);//使列完全填充并平分

??tableWidget->verticalHeader()->setResizeMode(QHeaderView::Stretch);//行自適應寬度??????????????????????????????????????????????????????????????????????????????????????????????????????

??tableWidget->resizeColumnsToContents();?//根據內容調整列寬

??tableWidget->resizeColumnToContents(int?col);//根據內容自動調整給定列寬

??tableWidget->horizontalHeader()->setResizeMode//把給定列設置為給定模式

??主要模式有Stretch和Fixed

15.添加表頭內容:

??方法一:

??QStringList?header;

??header<<""<<tr("1")<<tr("2")<<tr("3")<<tr("4)<<tr("5");

??方法二:

??tableWidget->setHorizontalHeaderLabels(QStringList()?<<?tr("1")<<tr("2")<<tr("3")<<tr("4)<<tr("5"));

16.清除:

??tableWidget->clear();//清除所有可見數據(包括表頭),行還在

??tableWidget->clearContents();//只清除表中數據,不清除表頭內容

??tableWidget->setRowCount(0);//連行也清除掉

15.一些零碎的知識點代碼:

??int?row?=?tableWidget->rowCount();//獲取表格中當前總行數

??tableWidget->setRowCount(row+1);//添加一行

??tableWidget->removeRow(row);//清除已有的行列

??Int?row1?=?tableWidget->currentItem()->row();//當前選中行

??bool?focus?=?tableWidget->isItemSelected(tableWidget->currentItem());//判斷是否選中一行

??QString?proName?=?tableWidget->item(row,?col)->text();//獲取某一格內容

??setShowGrid(true);//顯示表格線

??verticalHeader()->setVisible(false);//隱藏左邊垂直

??QHeaderView?*headerView?=?horizontalHeader();

??headerView->setMovable(false);//去除表頭的移動

??headerView->resizeSection(0,284);//設置第一列寬

??headerView->resizeSection(1,127);//設置第二列寬

??headerView->setResizeMode(QHeaderView::Fixed);//列表不能移動

??headerView->setClickable(false);//不響應鼠標單擊

??setEditTriggers(QTableWidget::NoEditTriggers);//不能編輯

??setSelectionBehavior(QTableWidget::SelectRows);//一次選中一行

??setSelectionMode(QAbstractItemView::SingleSelection);//只能單選

??/*QScrollBar?*scrollBar?=?horizontalScrollBar();

??scrollBar->hide();*/

??setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滾動條

??setVerticalScrollMode(QAbstractItemView::ScrollPerItem);//垂直滾動條按項移動

??setAutoScroll(false);//去掉自動滾動

17.排序:

??tableWidget->sortByColumn(0,?Qt::AscendingOrder);//顧名思義,該函數意思是將某列按升序/降序的方式排列

?

總結

以上是生活随笔為你收集整理的Qt 自定义tablewidget(背景色,标题箭头)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。