QtableWidget的用法总结
- 格式:docx
- 大小:25.52 KB
- 文档页数:11
pyqt qtableview用法标题:深入理解与使用PyQt中的QTableViewPyQt是一个强大的Python GUI库,它提供了丰富的图形用户界面元素。
其中,QTableView是一种常用的数据显示组件,常用于显示表格形式的数据。
本文将详细解析PyQt QTableView的用法,通过一步步的实践操作,帮助读者理解和掌握其核心功能。
一、导入所需模块首先,我们需要导入PyQt5的相关模块。
在Python环境中,我们可以使用以下代码导入所需的模块:pythonimport sysfrom PyQt5.QtWidgets import QApplication, QTableView, QMainWindow, QVBoxLayoutfrom PyQt5.QtCore import Qtfrom PyQt5.QtGui import QStandardItemModel, QStandardItem这里,我们导入了以下几个模块:- sys:用于处理命令行参数和异常退出。
- QApplication:这是PyQt5中的核心应用类,用于创建应用程序实例。
- QTableView:这是我们本次主题的重点,用于显示表格数据的视图类。
- QMainWindow:这是一个主窗口类,用于承载我们的QTableView。
- QVBoxLayout:这是一个布局管理器,用于在窗口中排列组件。
- QStandardItemModel和QStandardItem:这两个类是标准项模型和标准项,用于存储和管理表格数据。
二、创建主窗口和QTableView接下来,我们需要创建一个主窗口,并在其中添加一个QTableView:pythonapp = QApplication(sys.argv)window = QMainWindow()table_view = QTableView(window)这里,我们首先创建了一个QApplication实例,然后创建了一个QMainWindow实例作为我们的主窗口。
QtableWidget的用法总结QTableWidget的主要特点和用途包括:1. 显示数据:通过设置表头和数据项,可以方便地显示数据。
可以使用setItem方法设置每个单元格的内容,也可以使用setRow或setColumn方法批量设置行或列的内容。
3. 排序和过滤:可以通过sortByColumn方法和setSortingEnabled 属性来设置表格的排序方式,默认情况下,表格是可排序的。
可以使用setFilterRegExp方法和setFilterKeyColumn方法来实现表格的过滤功能。
4. 选择和选中:可以通过setSelectionMode方法来设置表格的选择方式,默认情况下,可以选择单行或单列。
可以使用selectedItems方法获取当前选中的单元格。
5. 高级功能:QTableWidget还提供了很多高级功能,包括合并单元格,拖放操作,剪贴板操作,自定义样式,自定义委托等。
可以通过继承QTableWidget类来实现自定义的表格功能。
接下来,我们将对QTableWidget的常用功能进行详细介绍和示例。
1. 创建QTableWidget可以使用以下代码来创建一个简单的QTableWidget:"""import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItemclass MyWindow(QMainWindow):def __init__(self):super(.__init__self.initUIdef initUI(self):self.tableWidget = QTableWidget(self)self.tableWidget.setRowCount(5)self.tableWidget.setColumnCount(3)self.setCentralWidget(self.tableWidget)self.showapp = QApplication(sys.argv)window = MyWindowsys.exit(app.exec_()"""2.设置表头可以使用setHorizontalHeaderLabels和setVerticalHeaderLabels 方法来设置表头:"""self.tableWidget.setHorizontalHeaderLabels(['姓名', '年龄','性别'])self.tableWidget.setVerticalHeaderLabels(['1', '2', '3', '4', '5'])"""3.设置单元格内容可以使用setItem方法来设置每个单元格的内容:"""item = QTableWidgetItem('李四')self.tableWidget.setItem(0, 0, item)"""4.获取单元格内容可以使用item方法来获取每个单元格的内容:"""item = self.tableWidget.item(0, 0)print(item.text()""""""self.tableWidget.setEditTriggers(QTableWidget.AnyKeyPressed ,QTableWidget.EditKeyPressed , QTableWidget.DoubleClicked) """6.排序和过滤可以使用sortByColumn方法和setSortingEnabled属性来设置表格的排序方式:"""self.tableWidget.setSortingEnabled(True)self.tableWidget.sortByColumn(1, QtCore.Qt.AscendingOrder)"""可以使用setFilterRegExp方法和setFilterKeyColumn方法来实现表格的过滤功能:"""filter_str = '李'self.tableWidget.setFilterRegExp(QtCore.QRegExp(filter_str, QtCore.Qt.CaseInsensitive))self.tableWidget.setFilterKeyColumn(0)"""7.选择和选中可以使用setSelectionMode方法来设置表格的选择方式,默认情况下,可以选择单行或单列:"""self.tableWidget.setSelectionMode(QTableWidget.SingleSelecti on)self.tableWidget.setSelectionBehavior(QTableWidget.SelectRow s)"""可以使用selectedItems方法获取当前选中的单元格:"""selected_items = self.tableWidget.selectedItemsfor item in selected_items:print(item.text()"""8.高级功能合并单元格:"""self.tableWidget.setSpan(0, 0, 2, 2)"""拖放操作:"""self.tableWidget.setDragDropMode(QTableWidget.DragDrop)self.tableWidget.setAcceptDrops(True)"""剪贴板操作:"""self.tableWidget.setContextMenuPolicy(QtCore.Qt.ActionsConte xtMenu)copy_action = QtGui.QAction('拷贝', self)copy_action.triggered.connect(self.copy)self.addAction(copy_action)"""自定义样式:"""self.tableWidget.setStyleSheet("QTableWidget{background-color: yellow}")"""自定义委托:"""self.tableWidget.setItemDelegate(MyDelegate() """。
Qt中QTableWidget用法总结一、创建QTableWidget要创建一个QTableWidget,首先需要在Qt项目中添加表格控件的头文件:#include <QTableWidget>然后通过创建一个QTableWidget类的实例来生成一个表格:QTableWidget *tableWidget = new QTableWidget(;二、设置表格属性可以通过以下几种方式来设置表格的属性:1.设置表格的行数和列数:tableWidget->setRowCount(5);tableWidget->setColumnCount(3);tableWidget->setHorizontalHeaderLabels(QStringList( << "Name" << "Age" << "Gender");3.设置单元格的属性:tableWidget->setItem(row, column, item):设置特定单元格的内容。
tableWidget->item(row, column)->setTextAlignment(Qt::AlignCenter):设置单元格的对齐方式。
4.设置表格的选择模式:tableWidget->setSelectionMode(QAbstractItemView::SingleSelection):设置为单选模式。
tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection):设置为多选模式。
三、添加数据可以通过以下几种方式向表格中添加数据:1.直接设置单元格中的文字:tableWidget->setItem(row, column, newQTableWidgetItem("John"));2.设置单元格中的图标:QTableWidgetItem *item = new QTableWidgetItem(;item->setIcon(QIcon("icon.png"));tableWidget->setItem(row, column, item);3.添加整行或整列的数据:tableWidget->setHorizontalHeaderLabels(QStringList( << "Name" << "Age" << "Gender");tableWidget->insertRow(row);tableWidget->setItem(row, 0, new QTableWidgetItem("John"));tableWidget->setItem(row, 1, new QTableWidgetItem("25"));tableWidget->setItem(row, 2, new QTableWidgetItem("Male"));四、信号与槽的连接可以通过以下几种方式连接信号与槽:1.单元格点击事件:connect(tableWidget, &QTableWidget::cellClicked, this,&MainWindow::onCellClicked);2.行选中事件:connect(tableWidget, &QTableWidget::itemSelectionChanged, this, &MainWindow::onSelectionChanged);3.表格数据变化事件:connect(tableWidget, &QTableWidget::itemChanged, this,&MainWindow::onItemChanged);五、其他常用功能1.获取选中的单元格:QList<QTableWidgetItem *> selectedItems = tableWidget->selectedItems(;2.获取单元格中的数据:QString text = tableWidget->item(row, column)->text(;3.设置单元格的背景色:tableWidget->item(row, column)->setBackground(Qt::blue);4.设置选中行的背景色:tableWidget->setStyleSheet("QTableWidget::item:selected{background-color: blue}");5.设置表头的背景色:tableWidget->horizontalHeader(->setStyleSheet("QHeaderView::section{background-color: gray}");六、总结。
qtableview的用法一、概述QTableView是Qt框架中的一个重要控件,用于显示和编辑表格数据。
它提供了丰富的功能和灵活的接口,可以满足各种表格数据显示的需求。
本文将详细介绍QTableView的用法,包括数据模型的设置、表头的设置、单元格的编辑以及信号与槽的连接等。
二、数据模型的设置在使用QTableView之前,我们需要先设置数据模型。
数据模型负责提供表格的数据,并将其与QTableView进行关联。
Qt提供了QAbstractTableModel和QStandardItemModel两个常用的数据模型类,我们可以根据实际需求选择其中之一。
1. QAbstractTableModelQAbstractTableModel是一个抽象类,我们需要继承它并实现一些纯虚函数来完成自定义的数据模型。
以下是一个简单的例子:class MyTableModel : public QAbstractTableModel{public:MyTableModel(QObject *parent = nullptr): QAbstractTableModel(parent){// 初始化数据m_data << QVector<QString>{"Alice", "25", "Female"}<< QVector<QString>{"Bob", "30", "Male"}<< QVector<QString>{"Cindy", "28", "Female"};}int rowCount(const QModelIndex &parent = QModelIndex()) const override{if (parent.isValid())return 0;return m_data.size();}int columnCount(const QModelIndex &parent = QModelIndex()) const override{if (parent.isValid())return 0;if (m_data.isEmpty())return 0;return m_data.first().size();}QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override{if (!index.isValid())return QVariant();if (role == Qt::DisplayRole || role == Qt::EditRole)return m_data[index.row()][index.column()];return QVariant();}private:QVector<QVector<QString>> m_data;};在上述代码中,我们定义了一个名为MyTableModel的类,继承自QAbstractTableModel。
QT QTableView用法总结QTableView常用于实现数据的表格显示。
下面我们如何按步骤实现学生信息表格:一添加表头//准备数据模型QStandardItemModel *student_model = new QStandardItemModel();student_model->setHorizontalHeaderItem(0, new QStandardItem(QObject::tr("Name")));student_model->setHorizontalHeaderItem(1, new QStandardItem(QObject::tr("NO.")));student_model->setHorizontalHeaderItem(2, new QStandardItem(QObject::tr("Sex")));student_model->setHorizontalHeaderItem(3, new QStandardItem(QObject::tr("Age")));student_model->setHorizontalHeaderItem(4, new QStandardItem(QObject::tr("College")));//利用setModel()方法将数据模型与QTableView绑定ui->student_tableview->setModel(student_model);二设置表格属性//设置列宽不可变动,即不能通过鼠标拖动增加列宽ui->student_tableview->horizontalHeader()->setResize Mode(0, QHeaderView::Fixed);ui->student_tableview->horizontalHeader()->setResize Mode(1, QHeaderView::Fixed);ui->student_tableview->horizontalHeader()->setResize Mode(2, QHeaderView::Fixed);ui->student_tableview->horizontalHeader()->setResize Mode(3, QHeaderView::Fixed);ui->student_tableview->horizontalHeader()->setResize Mode(4, QHeaderView::Fixed);//设置表格的各列的宽度值ui->student_tableview->setColumnWidth(0,100);ui->student_tableview->setColumnWidth(1,100);ui->student_tableview->setColumnWidth(2,100);ui->student_tableview->setColumnWidth(3,100);ui->student_tableview->setColumnWidth(4,100);//默认显示行头,如果你觉得不美观的话,我们可以将隐藏ui->student_tableview->verticalHeader()->hide();//设置选中时为整行选中ui->student_tableview->setSelectionBehavior(QAbstrac tItemView::SelectRows);//设置表格的单元为只读属性,即不能编辑ui->student_tableview->setEditTriggers(QAbstractItem View::NoEditTriggers);//如果你用在QTableView中使用右键菜单,需启用该属性ui->tstudent_tableview->setContextMenuPolicy(Qt::Cus tomContextMenu);三动态添加行在表格中添加行时,我们只需要在model中插入数据即可,一旦model中的数据发生变化,QTabelView显示就会做相应的变动//在第一行添加学生张三的个人信息(setItem函数的第一个参数表示行号,第二个表示列号,第三个为要显示的数据) student_model->setItem(0, 0, new QStandardItem(“张三"));student_model->setItem(0, 1, newQStandardItem("20120202"));student_model->setItem(0, 2, new QStandardItem("男"));student_model->setItem(0, 3, new QStandardItem("18"));student_model->setItem(0, 4, new QStandardItem("土木学院"));四设置数据显示的样式//设置单元格文本居中,张三的数据设置为居中显示 student_model->item(0,0)->setTextAlignment(Qt::AlignCenter);student_model->item(0,1)->setTextAlignment(Qt::AlignCenter);student_model->item(0,2)->setTextAlignment(Qt::AlignCenter);student_model->item(0,3)->setTextAlignment(Qt::AlignCenter);student_model->item(0,4)->setTextAlignment(Qt::AlignCenter);//设置单元格文本颜色,张三的数据设置为红色 student_model->item(0,0)->setForeground(QBrush(QColor(255, 0, 0)));student_model->item(0,1)->setForeground(QBrush(QColor(255, 0, 0)));student_model->item(0,2)->setForeground(QBrush(QColor(255, 0, 0)));student_model->item(0,3)->setForeground(QBrush(QColor(255, 0, 0)));student_model->item(0,4)->setForeground(QBrush(QColor(255, 0, 0)));//将字体加粗student_model->item(0, 0)->setFont( QFont( "Times", 10,QFont::Black ) );student_model->item(0, 1)->setFont( QFont( "Times", 10, QFont::Black ) );student_model->item(0, 2)->setFont( QFont( "Times", 10, QFont::Black ) );student_model->item(0, 3)->setFont( QFont( "Times", 10, QFont::Black ) );student_model->item(0, 4)->setFont( QFont( "Times", 10, QFont::Black ) );//设置排序方式,按年龄降序显示student_model->sort(3, Qt::DescendingOrder);。
qt table view使用技巧概述Qt TableView是Qt核心部件库中的一个重要部件,它可以帮助开发者快速构建丰富的可视化界面,以更好地支持数据的显示和可视化管理。
Qt TableView是一个可定制的可视化组件,它可以使字段和属性信息一目了然,清晰地显示在表格中,以便正确地显示和管理数据,从而实现更高效的数据管理和更好的用户体验。
用法1.创建表格视图首先,你要创建一个表格视图,可以在你的应用程序的代码库中添加一个布局,然后在其中添加一个表格视图:QTableView *tableView = new QTableView;2.设置表格模型接下来,你需要将表格模型设置为表格视图:MyModel *model = new MyModel(this);tableView->setModel(model);这里MyModel是指你已经创建的自定义的表格模型,它实现了QAbstractTableModel的接口,可以定义表格12的行数,列数,数据和标题等。
3.设置表头如果你想在表格头中显示表格的标题,你可以调用以下函数来实现:tableView->horizontalHeader()->setSectionResizeMode(QHeader View::Stretch);这里的QHeaderView::Stretch参数将会使表头拉伸以适应表格每列的宽度。
4.设置表格你可以用setColumnWidth()函数来设置表格的宽度:tableView->setColumnWidth(0, 150); //设置第一列的宽度为150px你也可以指定每一列的头标题,使用setHeaderData()函数来做: model->setHeaderData(0, Qt::Horizontal, tr('ID'));model->setHeaderData(1, Qt::Horizontal, tr('Name'));这样就可以在表格头中显示每列的标题了。
qt tablewidget用法使用Qt TableWidget 进行表格操作Qt 是一种跨平台的C++应用程序开发框架,提供了许多强大的工具和类来简化软件开发。
其中,TableWidget 类是Qt中用于展示和操作表格数据的重要组件。
本文将介绍Qt TableWidget 的基本用法,包括表格的创建、数据的插入和删除、以及表格的样式设置等。
1. 创建表格在使用TableWidget 前,需要在Qt项目中添加"QtGui" 模块。
然后,可以通过以下代码创建一个基本的表格:```QTableWidget *tableWidget = new QTableWidget(rowCount, columnCount, parent);```其中,rowCount 和 columnCount 分别表示表格的行数和列数,parent 为表格的父窗口。
创建表格后,可以通过setHorizontalHeaderLabels() 和setVerticalHeaderLabels() 方法设置表格的水平和垂直表头标签。
2. 插入和删除数据插入数据是 TableWidget 常用的操作之一。
可以使用setItem() 方法为表格中的每个单元格添加QTableWidgetItem 对象,示例如下:QTableWidgetItem *item = new QTableWidgetItem("Data");tableWidget->setItem(row, column, item);```其中,row 和 column 分别代表要插入数据的行和列。
另外,可以通过删除行和列的方式来移除表格中的数据,示例如下:```tableWidget->removeRow(row);tableWidget->removeColumn(column);```3. 表格样式设置Qt TableWidget 提供了丰富的方法来设置表格的样式,包括字体、颜色、对齐方式等。
qtablewidget 用法QTableWidget是Qt提供的一个表格控件,用于显示多行多列的数据。
以下是QTableWidget的基本用法:1. 导入QTableWidget模块:```pythonfrom PyQt5.QtWidgets import QTableWidget, QTableWidgetItem2. 创建QTableWidget实例:```pythontableWidget = QTableWidget()3. 设置表格的行数和列数:```pythontableWidget.setRowCount(5) # 设置行数为5行tableWidget.setColumnCount(3) # 设置列数为3列4. 设置表格的表头:```pythontableWidget.setHorizontalHeaderLabels(['列1', '列2', '列3']) # 设置水平表头tableWidget.setVerticalHeaderLabels(['行1', '行2', '行3', '行4', '行5']) # 设置垂直表头5. 设置表格的内容:```pythontableWidget.setItem(0, 0, QTableWidgetItem("A"))tableWidget.setItem(0, 1, QTableWidgetItem("B"))tableWidget.setItem(0, 2, QTableWidgetItem("C"))6. 获取表格的内容:```pythonitem = tableWidget.item(0, 0) # 获取第一行第一列的表格项text = item.text() # 获取表格项的文本内容7. 显示表格:```pythontableWidget.show()通过上述的用法,你可以创建一个QTableWidget,设置表格的行数和列数,并且设置表头和表格内容,最后显示这个表格控件。
总结—QTableWidgetui->tableWidget->setShowGrid(true);//显示表格线ui->tableWidget->verticalHeader()->setVisible(false); //隐藏列表头ui->tableWidget->horizontalHeader()->setVisible(false); //隐藏行表头ui->tableWidget->horizontalHeader()->setClickable(false); //设置表头不可点击ui->tableWidget->horizontalHeader()->setHighlightSections(false); //点击表时不对表头行光亮(获取焦点)ui->tableWidget->horizontalHeader()->setStretchLastSection(true); //设置充满表宽度,该代码是实现将header最后的空间补全// 下句代码和上一句一起起作用,从而实现多列将列头均分,即无论多少列,都不会出现水平滚动条。
ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);// 以下一句实现使每列的列宽按列所在的内容自适应宽度ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);ui->tableWidget->verticalHeader()->setStretchLastSection(true); //表格高度自适应ui->tableWidget->verticalHeader()->setResizeMode(QHeaderView::Stretch);ui->tableWidget->setFont(QFont("Helvetica"));//设置表格字体ui->tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); //可多选(Ctrl、Shift、 Ctrl+A都可以)//设置垂直滚动条样式ui->tableWidget->setStyleSheet("QScrollBar{background:transparent; width:12px;}""QScrollBar::handle{background:lightgray; border:2px solid transparent; border-radius:5px;}""QSrollBar::handle:hover{background:gray;}""QScrollBar::sub-line{background:transparent;}""QScrollBar::add-line{background:transparent;}");//设置字体ui->tableWidget->setFont(QFont("Microsoft YaHei",15,50));//设置表格字体,15pix,粗体50//设置单元格字体QFontft ( "Microsoft YaHei",12,50);//字体1,12pixItem->setFont(ft1);//设置表格背景色采用setStyleSheetui->tableWidget->setStyleSheet("QTableView{border:1px solid #d9e1e3;}");//设置表格线//设置单元格背景色QColorcolorLightBlue = QColor(205,241,247);//颜色浅蓝色item->setBackgroundColor(colorLightBlue);//设置单元格字体颜色item->setTextColor(colorLightBlue);//单元格显示内容ui->tableWidget->setItem(0,0,new QTableWidgetItem(“Hello”);或QTableWidgetItem * Item= new QTableWidgetItem();Item->setTextAlignment(Qt::AlignCenter);txt =“Hello”;Item->setText(txt);ui->tableWidget->setItem(0,0,Item);Item->setTextAlignment(Qt::AlignCenter);//单元格内容居中//合并单元格ui.qtablewidget->setSpan(2, 2, 3, 2);//第一个参数:要改变的单元格行数//第二个参数:要改变的单元格列数//第三个参数:需要合并的行数//第四个参数:需要合并的列数QStringstrText = ui.qtablewidget->item(0, 0)->text(); //获取某一单元格内容QSS样式表(根据需求修改颜色)://设置表格QTableWidget{background: rgb(56,56,56);alternate-background-color:rgb(48,51,55);selection-background-color:qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgb(56,56,56),stop:1rgb(66,66,66));}//设置表头QHeaderView::section{background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgb(46,46,46),stop:1 rgb(56,56,56)); color: rgb(210,210,210);padding-left: 4px;border: 1px solid #383838;}//设置滚动条QScrollBar:vertical{border: 0px solid grey;background: transparent;width: 15px;margin: 22px 0 22px 0;}QScrollBar::handle:vertical{background: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 rgb(46,46,46),stop:1 rgb(66,66,66));min-height: 20px;}QScrollBar::add-line:vertical{border: 0px solid grey;background: rgb(66,66,66);height: 20px;subcontrol-position: bottom;subcontrol-origin: margin;}QScrollBar::sub-line:vertical{border: 0px solid grey;background: rgb(56,56,56);height: 20px;subcontrol-position: top;subcontrol-origin: margin;}QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {border: 0px solid grey;width: 3px;height: 3px;background: rgb(46,46,46);}QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {background: none;}。
python qtablewidget常用方法Python QTableWidget常用方法QTableWidget是Qt中的一个表格控件,用于在窗体中显示和编辑表格数据。
在Python中,通过PyQt或PySide库可以使用QTableWidget 进行表格的创建和操作。
本文将介绍QTableWidget中常用的方法,帮助读者更好地掌握这个强大的控件。
一、QTableWidget的创建在使用QTableWidget之前,首先需要创建一个窗体并将QTableWidget 添加进来。
使用以下代码可以创建一个简单的窗体并添加一个QTableWidget控件:import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItemclass MainWindow(QMainWindow):def __init__(self):super(MainWindow, self).__init__()self.table = QTableWidget(self) # 创建QTableWidget对象self.setCentralWidget(self.table) # 将QTableWidget设置为窗体的中央控件self.table.setColumnCount(3) # 设置表格列数self.table.setRowCount(5) # 设置表格行数if __name__ == '__main__':app = QApplication(sys.argv)mainWindow = MainWindow()mainWindow.show()sys.exit(app.exec_())上述代码创建了一个包含3列5行的QTableWidget对象,并将其设置为窗体的中央控件。
二、基本操作方法2.1 添加数据QTableWidget提供了多种方法将数据添加到表格中:- setItem(row, column, item):在指定的单元格(row, column)中添加一个QTableWidgetItem对象。
N z在使用Qt不多的日子里,已经两次用到了QTableWidget这个控件,也慢慢的习惯和喜欢上了它。
再使用QTableWidget的时候,已不像刚开始使用时的迷茫。
嗯嗯。
现在就来总结总结我与QTableWidget相识的历程......(*^__^*) 嘻嘻……使用时也查过不少资料,在此感谢前辈们的用心总结与分享!▍★∴....▍▍....█▍☆★∵ ..../◥█▅▅██▅▅██▅▅▅▅▅███◤.◥███████████████◤~~~~◥█████████████◤~~~~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.ic o"),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 DescriptionQt.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 DescriptionQt.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(getIt em(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和Fixed15.添加表头内容:方法一: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);//去掉自动滚动使行间隔变颜色QPalette pal;pal.setColor(QPalette::Base,QColor(255,0,0));pal.setColor(QPalette::AlternateBase,QColor(0,255,0));ui->tableWidget->setPalette(pal);ui->tableWidget->setAlternatingRowColors(true);参加OSC应用开发大赛,拿Nexus 4手机活动详情基本外观设置FriendTable->setFrameShape(QFrame::NoFrame); //设置边框FriendTable->setHorizontalHeaderLabels(HeadList); 设置表头FriendTable->setSelectionMode(QAbstractItemView::SingleSelection ); 设置选择的模式为单选择FriendTable->setSelectionBehavior(QAbstractItemView::SelectRows ); 设置选择行为时每次选择一行FriendTable->setShowGrid(false); 设置不显示格子线FriendTable->setFont(font); 设置字体设置表单背景或透明QPalette pal = musicTable->palette();pal.setBrush(this->backgroundRole(),QBrush(QPixmap("images/ background.png")) );musicTable->setPalette( pal );设置它的背景图片,也可以将QBrush初始化为QColor来设置背景颜色QPalette pll = musicTable->palette();pll.setBrush(QPalette::Base,QBrush(QColor(255,255,255,0))); musicTable->setPalette(pll); //和QTextEdit一样,都可以使用样式表QPalette来修改它的背景颜色和背景图片,这里我们把刷子设置为全透明的,就可以是透明的在QTableWidget列表中添加图片的方法QTableWidgetItem *cubesHeaderItem = newQTableWidgetItem(tr("Cubes"));cubesHeaderItem->setIcon(QIcon(QPixmap("1.png"))); cubesHeaderItem->setTextAlignment(Qt::AlignVCenter);musicTable->setItem(1,1,cubesHeaderItem); //在第一行第一列中显示图片*******************表头的属性修改**************** musicTable->horizontalHeader()->resizeSection(0,150); //修改表头第一列的宽度为150musicTable->horizontalHeader()->setFixedHeight(25); //修改表头合适的高度musicTable->horizontalHeader()->setStyleSheet("QHeaderView::se ction {background-color:lightblue;color: black;padding-left:4px;border: 1px solid #6c6c6c;}"); //设置表头字体,颜色,模式FriendTable->verticalHeader()->setStyleSheet("QHeaderView::sect ion { background-color:skyblue;color: black;padding-left:4px;border: 1px solid #6c6c6c}"); //设置纵列的边框项的字体颜色模式等本来想找找QT里有没有现成的API的,结果没有找到,只能自己写了。