classQWDCurrentView :publicQWidget
{
public:
QWDCurrentView(void);
public:
~QWDCurrentView(void);

public:
voidGetCurrentValues(STREAMLINE¤tValue);//得到某一回线的电流相关信息
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)


转载于:https://blog.51cto.com/langtuteng/1373883