如何将QTreeWidget中的列调整为所需的最小空间
How to resize columns in QTreeWidget to the minimum space required
我是一名学生程序员,我正在使用Qt为工作构建GUI界面。我有一个QTreeWidget
,它总共有8列。需要输入到这些列中的每一列中的输入都相当小。在这方面,我试图找到一种方法,将所有列的大小重新调整为所需的最小空间。很像当你点击分隔符时执行的动作。我看了几个网站和Qt文档,还没有找到解决方案。在查看了文档后,似乎有很多方法可以做到这一点,但我找不到一种方法。我开始觉得我需要在某个地方启用/禁用某些功能。就好像我在构建函数中写入的更改(该函数清除表;从矢量中读取数据,在表中显示某些数据,然后假设将标题/列的大小重新调整为刚好适合列的内容)甚至没有应用。我尝试了以下内容,没有任何更改:
ui->treeWidgetInjections->setColumnWidth(i, minimumWidth());
ui->treeWidgetInjections->resizeColumnToContents(i);
ui->treeWidgetInjections->header()->ResizeToContents;
ui->treeWidgetInjections->header()->resizeSection(i, minimumWidth());
所有这些都在我的构建函数的末尾(删除了无关信息):
ui->treeWidgetInjections->clear();
for (int i=0; i < qTreeInjectionData.size(); i++)
{
//fill Qtree with items;
//fill QTree items with data;
//re size function here;
}
请只留下富有成效的反馈,因为我只对学习和克服这一挑战感兴趣。提前感谢!
这个最小的例子适用于我:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QVBoxLayout *layout = new QVBoxLayout(centralWidget());
QTreeWidget *tree = new QTreeWidget(this);
layout->addWidget(tree);
tree->setColumnCount(3);
QStringList first, second, third;
first << "xxxxxxxxx" << "xxxxxxxxxxxxx" << "xxxxxxxx";
second << "xxxxx" << "xxxxxxxxxxxxxxxxx" << "xxxxx";
third << "xxxxxxxxxxxxxx" << "xxxxxxxxxx" << "xxxxxxxx";
tree->insertTopLevelItem(0, new QTreeWidgetItem(first));
tree->insertTopLevelItem(0, new QTreeWidgetItem(second));
tree->insertTopLevelItem(0, new QTreeWidgetItem(third));
for(int i = 0; i < 3; i++)
tree->resizeColumnToContents(i);
}
您所需要做的就是在填充视图后为每列调用resizeColumnToContents()
方法一次。如果问题仍然存在,请告诉我。
我的问题是StretchLastSection
被设置为true,如果该值被设置为true,则该属性将覆盖在页眉最后一节上设置的调整大小模式。
解决方案:
_treeWidget = new UIWidgetSceneTree();
_treeWidget->header()->setStretchLastSection(false);
_treeWidget->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- OpenGL相机和相机空间转型的困惑
- CUDA内核和数学函数的显式命名空间
- 打印第二列时的2d字符矢量打印空间
- 嵌套的匿名命名空间
- CMakeLists.txt中的命名空间表示法
- 类是C++中的命名空间吗
- 在命名空间中使用全局命名空间中的函数
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- '使用命名空间{嵌套在另一个命名空间中的某个命名空间}"
- 为什么 openmp 的并行不适用于矢量化色彩空间转换?
- 是否可以将函数导入命名空间,但不能导出它?
- 如何将QTreeWidget中的列调整为所需的最小空间