2013-11-17 5 views
2

я в настоящее время имеют TableView, который выглядит, как этотMakingthe Столбцы Tableview под размер его содержимого

enter image description here

как вы можете видеть только третий столбец является правильным ширина в то время как первый и второй колонке больше. Есть ли способ сделать столбцы подходящими для содержимого или явно сделать меньше 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

'resizeColumnsToContents()' должно работать отлично для этого. Вероятно, что-то не так с тем, как вы его используете. – Chris

+0

Код показывает, что я делаю – Rajeshwar

ответ

0
  • resizeColumnsToContents() только изменить размер столбцов один раз, в зависимости от текущих данных таблицы. Поэтому вы должны вызывать его каждый раз, когда вы меняете эти данные, т. Е. В конце AddEntry(). Данные, содержащиеся в таблице, но не отображаемые в настоящее время в окне просмотра, равны , а не.

  • resizeColumnsToContents() учитывает ширину горизонтальных диаграмм, даже если они установлены невидимыми. Действительно ли они называются «col1», «col2» и «col3» в вашем коде?

+0

Да, они есть. Имеются ли названия столбцов? – Rajeshwar

+0

Ширина имен имеет значение. –

0

ui.tableView-> horizontalHeader() -> setResizeMode (QHeaderView :: ResizeToContents)

QHeaderView автоматически изменяет размер секции к ее оптимальному размеру на основе содержимого всей строки или столбца. Размер не может быть изменен пользователем или программным путем. (Это значение было введено в 4.2)

+0

или сделать ui.tableView-> resizeColumnsToContents(); после AddEntry(); – serj

Смежные вопросы