QTabWidget的列头宽度自适应

classQWDCurrentView :publicQWidget

{

public:

QWDCurrentView(void);

public:

~QWDCurrentView(void);


public:

voidGetCurrentValues(STREAMLINE&currentValue);//得到某一回线的电流相关信息

voidSetCurrentValues(STREAMLINEcurrentValue);//设置某一回线的电流相关信息


private:

voidInitView(QStringListrowHeader,QStringListcolHeader);

private:

QTableWidget*m_tableWidget;

};


QWDCurrentView::QWDCurrentView(void)

{

setMinimumSize(1000,400);

setMaximumSize(1000,400);


QStringListcolHeader;

colHeader.clear();


for(inti = 0; i < LINENUM; i++)

{

colHeader.append(QString("%1").arg(i));

}


QStringListrowHeader;

rowHeader.append("线路号");

rowHeader.append("类别(电压或电压)");

rowHeader.append("值(V或A)");

rowHeader.append("PT/CT变比");

rowHeader.append("角度");

rowHeader.append("拨码开关");


m_tableWidget= newQTableWidget(this);

InitView(rowHeader,colHeader);

QHBoxLayout*mainLayout = newQHBoxLayout;

mainLayout->addWidget(m_tableWidget);

setLayout(mainLayout);


//(m_tableWidget->horizontalHeader())->setResizeMode(QHeaderView::Stretch);

}


在构造这个窗体时如果不加这句话会出现出下结果,见附件1


在这个窗体的最后面有一块空白的地方,相当的难看。我们在开头限制了列表父窗体的大小,如果列表宽度与父窗体宽度不一至就会出现这个情况了。解决方法有如下几种:

(1)测试法。通过一个数一个数的逼进来达到父窗体与列表的宽度一至,比如这个我试着改为953时就能达到这个效果了,但是在别的设备上是不是这个样子还不确定了。

(2)得到水平列头的宽度,然后加上每一行所需要的宽度。可行,但是过程比较繁锁。本人没有实现成功。

(3)通过设置其自动调整法。也就是加上红色标注的地方,使水平表头自动调整宽度,就可以达到这个效果了。


最终采取第三种方式,见附件2


其实如果要修改垂直可以将红色标准处改为如下:

(m_tableWidget-> verticalHeader())->setResizeMode(QHeaderView::Stretch)


你可能感兴趣的:(QTabWidget自适应宽度)