qt中表格自适应宽度 - qt中项目启动中进行一些组件的初始化设置时的注意事项等(比如表格的自适应宽度、可拖拽宽度)

一、猜想与试验

说明一下,我已经很久没有写qt了,这两天准备写着玩玩,在我写的小demo中呢,有个场景,我需要让表格进行自适应填充满窗口,同时列也可以进行拖拽宽度,那么这个场景呢,我就试着找了下网上的资料(后面我会解释如何在初始化时正确的去处理一些我们想处理并能正确获取值)。

对表格自动填充(列自适应分配列宽)的设置:

// 设置列表自动填充满窗口
ui->information_tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

我在mainwindow.cpp构造中进行了处理,效果出来了,确实填充满了

于是我想可拖拽,就在构造中进行了如下设置:

// 设置列表自动填充满窗口
ui->information_tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
// 设置每列都能够拖拽
autoAdjustmentTableWidth();
// 设置每列都能够拖拽,且自适应组件宽度
void MainWindow::autoAdjustmentTableWidth()
{
    qDebug()<<"width:"<<width;
    int tableCount = ui->information_tableWidget->columnCount();
    // 设置每列可拖拽
    for(int column = 0;column<tableCount;column++) {
        ui->information_tableWidget->horizontalHeader()->setSectionResizeMode(column, QHeaderView::Interactive);
    }
}

 我看了效果,奇迹发生了,样式全不见了,填充呢?

 好家伙,按我想得应该是填充满,并且可拖拽,拖动超出是出现滚动条,这是个神马

于是我又开始找解决办法,找到了这个,说是设置列宽,好吧,我就想到我自己来动态设置列宽,于是我就把上面的autoAdjustmentTableWidth()方法改了一下,下面这样:

void MainWindow::autoAdjustmentTableWidth()
{
    int width = ui->information_tableWidget->width();
    qDebug()<<"width:"<<width;
    int tableCount = ui->information_tableWidget->columnCount();
    int columnItenWidth = width / tableCount;
    int lastColumnItenWidth = width - (columnItenWidth*(tableCount-1));
    // 设置每列可拖拽
    for(int column = 0;column<tableCount;column++) {
        ui->information_tableWidget->horizontalHeader()->setSectionResizeMode(column, QHeaderView::Interactive);
        if(column == tableCount-1) {
            ui->information_tableWidget->setColumnWidth(column,lastColumnItenWidth);
        } else {
            ui->information_tableWidget->setColumnWidth(column,columnItenWidth);
        }
    }
}

结果,这个是个什么鬼?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值