
然后,QtCreator会自动加载项目,我们打开项目后,找到对应的界面文件,然后将一个QTableWidget控件拖到主窗口中。
同时,为了方便起见,我们设置一下布局
我们接着运行一下程序,看一下初步的显示效果,可以看到窗口的白色区域就是QTableWidget,但没有显示任何内容
我们打开mainwindow.cpp文件,然后来设置QTableWidget显示列名。在构造函数中,我们首先设置tablewidget的列数。
然后,新建一个QStringList用于保存显示的header数据。接着,如图所示,将setHorizontalHeaderLabels设置为刚才的数据。
代码:
ui->tableWidget->setColumnCount(4)
QStringList m_Header
m_Header<<QString("序号")<<QString("姓名")<<QString("邮箱")<<QString("日期")
ui->tableWidget->setHorizontalHeaderLabels(m_Header)
然后,我们再运行一下,可以看到效果了,虽然显示的列名,但都是乱码,所以我们要再设置一下编码格式,只要在main函数中加入
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("system"))即可.
现在,列名有了,我们添加一下内容,代码如图所示。
然后,再运行下看一下效果,可以看到tablewidget中已经显示了我们的内容。新的内容可以按上述方式进行添加。
细心的朋友可能注意到了,当我们调整窗口大小的时候,表格是不会自动扩展的。我们可以通过代码设置一下。
ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch)
这样,我们最大化之后可以看到了效果。
由于Qt中的表格控件可以通过从QTableView或QTableWidget派生子类实现。
所以这里就可以利用表格的列宽和行高的设置来实现:
方法一:
1.调用表头的setSectionResizeMode()方法,代码如下:
m_tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents)
2.参数QHeaderView::ResizeToContens说明:调整列宽以适应单元内容。也就是说:
当单元内的文本较长的时候,这种方法将会严重影响表格的阅读。
这种方法只适合端文本内容的使用。
此外,设置了这种缩放方式之后,表头就不能再被拉伸完全失去响应。
方法二:
1.QTableView类还有一个成员方法:setColumnWidth(),用来设置表格列宽的。但是注意对setColumnWidth()的调用都要放在setModel()之后。代码如下:
m_viewList= new QTableView(this)m_viewList->setSelectionBehavior(QAbstractItemView::SelectRows)
m_viewList->setSelectionMode(QAbstractItemView::SingleSelection)
m_viewList->setSortingEnabled(false)m_viewList->verticalHeader()->hide()
m_viewList->setWordWrap(false)m_viewList->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel)
m_viewList->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel)
m_viewList->setShowGrid(false)m_viewList->setEditTriggers(QAbstractItemView::NoEditTriggers)
m_viewList->horizontalHeader()->setHighlightSections(false)
m_viewList->setItemDelegate(new NoFocusDelegate())m_viewList->setModel(m_proxyModel)
m_viewList->setAlternatingRowColors(true) //
alternative colorsm_viewList->setFrameShape(QFrame::NoFrame) //
column widthm_viewList->setColumnWidth(0,
85)m_viewList->setColumnWidth(1,
180)m_viewList->setColumnWidth(2,
90)m_viewList->setColumnWidth(3,
80)m_viewList->setColumnWidth(4,
80)m_viewList->setColumnWidth(5,
30)m_viewList->setColumnWidth(6,
40)m_viewList->setColumnWidth(7,
120)m_viewList->setColumnWidth(8,
120)m_viewList->setColumnWidth(9,
120)
2.效果对比:
在Model设置好之前调用setColumnWidth()的效果:每一列的宽度都是一样,没有区别对待:
在Model设置好之后调用setColumnWidth()的效果:第一列的内容一般较长,所以更宽,其他列则更窄:
根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。
具体步骤如下:/导致这种情况的原因主要是……
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)