我目前有一个看起来像这样的桌面视图
正如您所看到的,只有第3列是正确的宽度,而第1列和第2列更大。有没有什么方法可以使列适合内容或明确地使第1列和第二列更小。我试过做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();
答案 0 :(得分:1)
resizeColumnsToContents()
只会调整列的大小一次,具体取决于表格的当前数据。因此,每次更改数据时都应该调用它,即在AddEntry()
结束时调用它。表中包含但当前未在视口中显示的数据不受到尊重。
resizeColumnsToContents()
将horizontalHeaders的宽度考虑在内,即使它们设置为不可见。它们是否真的在您的代码中命名为“col1”,“col2”和“col3”?
答案 1 :(得分:0)
ui.tableView-&GT; horizontalHeader() - &GT; setResizeMode(QHeaderView :: ResizeToContents)
QHeaderView会根据整个列或行的内容自动将该部分的大小调整为最佳大小。用户无法或以编程方式更改大小。 (这个值是在4.2中引入的)