• 6849阅读
  • 3回复

QTableWidget表头内容无法改变 [复制链接]

上一主题 下一主题
离线la_fisher
 

只看楼主 倒序阅读 楼主  发表于: 2010-11-24
自己创建测试程序的时候是可以实现的,测试代码如下:
#include <QtGui/QApplication>
#include "widget.h"
#include <QTableWidget>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    
    QTableWidget* pTable = new QTableWidget(&w);
    pTable->setRowCount(2);
    pTable->setColumnCount(2);
    QStringList lsHeader;
    lsHeader.append("a");
    lsHeader.append("b");
    pTable->setHorizontalHeaderLabels(lsHeader);
    w.show();
    return a.exec();
}

但是用在现有的工程中,具体说就是在一个QDockWidget中用上述方法修改表头内容,
总是没什么效果(表头依然是1,2,...)。不知道可能是什么原因。工程中代码如下:
//QDockWidget构造函数中
m_pAnaArea = new CAnaArea(this);                        //这是一个QWidget控件
  
    m_pTable = new QTableWidget(m_pAnaArea);//创建表格控件
    m_pTable->setColumnCount(2);
    m_pTable->setRowCount(2);
    QStringList lsHeader;
    lsHeader.append(tr("a"));
    lsHeader.append(tr("b"));
    m_pTable->setHorizontalHeaderLabels(lsHeader);//修改表头(不知道为什么没有效果)

    m_pVBox = new QVBoxLayout(m_pAnaArea);  //因以后要在其中添加其他控件,用了纵向布局
    m_pVBox->setMargin(0);
    m_pVBox->addWidget(m_pTable);
    m_pAnaArea->setLayout(m_pVBox);
setWidget(m_pAnaArea);
离线la_fisher

只看该作者 1楼 发表于: 2010-11-24
PS: 现有工程中其他地方也用到了QTableWidget,是用designer设计的。用类似以上代码修改是正常的,不知是否有影响。
离线la_fisher

只看该作者 2楼 发表于: 2010-11-25
唉试了各种方法,setHorizontalHeaderItem等等,都无法改变表头,大家没有遇见过么?
离线la_fisher

只看该作者 3楼 发表于: 2010-11-25
问题已解决。

调用的位置调整一下,可能是因为父控件未初始化完成,所以子控件为正确初始化。

初始化表格的代码不放在QDockWidget的构造函数中(刷新显示时调用一次)就一切正常了。
快速回复
限100 字节
 
上一个 下一个