QT setColumnWidth在qtablewidget中不起作用

时间:2017-02-20 08:58:12

标签: c++ qt qtablewidget qicon

这是我的下面代码我在文件表中添加了一个图标(第0列),但我无法更改第0列的宽度

void Window::showFiles(const QStringList &files)
{
     int row=0 ;

    filesTable->clearContents();

    for (int i = 0; i < files.size(); ++i) {
        QTableWidgetItem *fileNameItem;
        QTableWidgetItem *icon_item = new QTableWidgetItem;//
        QIcon icon("myPATH/3.png");
        icon_item->setIcon(icon);
        QFile file(currentDir.absoluteFilePath(files[i]));
        qint64 size = QFileInfo(file).size();

        fileNameItem = new QTableWidgetItem(files[i]);
        fileNameItem->setFlags(fileNameItem->flags() ^ Qt::ItemIsEditable);


        filesTable->insertRow(i);
        filesTable->setItem(i, 0, icon_item);
        filesTable->setItem(i, 1, fileNameItem);
        filesTable->setColumnWidth(0,1);
        filesTable->resizeColumnsToContents();
        qDebug()<<"-***-"<<filesTable->columnWidth(0)<<endl;
        row++;
        if(filesTable->item(i,1)->text()==fileNameImg){
            filesTable->selectRow(i);
        }

    }
    filesFoundLabel->setText(tr("%1 file(s) found").arg(files.size()) +(" (Double click on a file to open it)"));
    filesFoundLabel->setWordWrap(true);
}

但我的表视图是这样的:

enter image description here

有没有办法减少图标(第0列的项目)和文本(第1列的项目)之间的距离?

更新1:

我在代码中添加了filesTable->resizeColumnsToContents();,但它没有什么区别,我需要尽可能地缩小差距

2 个答案:

答案 0 :(得分:0)

尝试使用resizeColumnToContents(int列)使它们更接近。

答案 1 :(得分:0)

合并一个表中的两个表。所以必须修复表大小并合并到一个表中。它可以在最终表上运行setColumnWidth。 我试过这里的样本量,

fileNameItem->resize(100,100);

icon_item->resize(50,100);

filesTable->setColumnWidth(0,100);

filesTable->setColumnWidth(1,50);

此尝试将帮助您..