【问题标题】:Makingthe columns of a tableview fit the size of its contents使 tableview 的列适合其内容的大小
【发布时间】:2013-11-17 20:21:39
【问题描述】:

我目前有一个看起来像这样的 tableview

您可以看到只有第三列是正确的宽度,而第一列和第二列更大。有什么办法可以使列适合内容或明确地使第 1 列和第 2 列更小。我试着做tableView->resizeColumnsToContents();,但这没有什么区别。有什么建议吗?

这是我的代码

void Test::AddEntry()
{
    QImage myimg;//(":/Test/Images/add.png");
    QStandardItem* item_avtr  =  new QStandardItem();
    item_avtr->setData( QPixmap::fromImage( myimg ), Qt::DecorationRole ) ;

    QStandardItem* item_aonline  =  new QStandardItem();
    item_aonline->setText("hello");

    QStandardItem* item_name  =  new QStandardItem("Name");


    QList<QStandardItem*> lst ;
    lst.push_back(item_avtr);
    lst.push_back(item_aonline);
    lst.push_back(item_name);

    ModelOptions->appendRow(lst);

}

模型是这样启动的

    ModelOptions =new QStandardItemModel();
ui.tableView->setModel(ModelOptions);
QStringList labels;

labels.push_back("col1");
labels.push_back("col2");
labels.push_back("col3");
ModelOptions->setHorizontalHeaderLabels(labels); 
ui.tableView->horizontalHeader()->setVisible(false);
ui.tableView->verticalHeader()->setVisible(false);
ui.tableView->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
ui.tableView->resizeColumnsToContents();
ui.tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
AddEntry();

【问题讨论】:

  • resizeColumnsToContents() 应该可以正常工作。您使用它的方式可能有问题。
  • 代码显示我在做什么

标签: c++ qt


【解决方案1】:
  • resizeColumnsToContents() 只会根据表的当前数据调整列的大小。因此,您应该在每次更改该数据时调用它,即在 AddEntry() 的末尾。表中包含但当前未显示在视口中的数据不得到尊重。

  • resizeColumnsToContents() 会考虑 Horizo​​ntalHeaders 的宽度,即使它们被设置为不可见。它们真的在您的代码中命名为“col1”、“col2”和“col3”吗?

【讨论】:

  • 是的。列名重要吗?
  • 名字的宽度很重要。
【解决方案2】:

ui.tableView->horizo​​ntalHeader()->setResizeMode(QHeaderView::ResizeToContents)

QHeaderView 会根据整列或整行的内容自动将部分调整为最佳大小。大小不能由用户或以编程方式更改。 (这个值是在4.2中引入的)

【讨论】:

  • 或者做 ui.tableView->resizeColumnsToContents(); AddEntry() 之后;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多