Свойства QTableview

0

Мне нужна помощь в настройке QTableView, я определил QTableView как показано в этом примере, который я нашел в Интернете:

model = new QStandardItemModel(2,3,this); //2 Rows and 3 Columns
model->setHorizontalHeaderItem(0, new QStandardItem(QString("ID")));
model->setHorizontalHeaderItem(1, new QStandardItem(QString("Name")));
model->setHorizontalHeaderItem(2, new QStandardItem(QString("Description")));
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableView->setModel(model);
  1. Как определить размер для каждого столбца отдельно, т.е. Используя проценты:
    Я бы получил первый столбец 10% от ширины второй 50%, третий 40%.

  2. Когда я запускаю программу и дважды щелкаю по строке в QTableView, я могу изменить значение ячейки, на которую было нажата, хотя я определил метод QTableView onDoubleclick, я имею в виду, что, когда вы нажимаете на переименование файла, он выделяет текст поэтому вы можете изменить, как я могу отключить это?

  3. Как сделать столбцы изменяемыми по размеру, то есть можно изменить размер, перетащив края столбцов.

Теги:
qt
qtableview
resizable

1 ответ

1
Лучший ответ

Сначала: используйте setColumnWidth() после setModel(). Например:

//...
ui->tableView->setModel(model);
double  ii = ui->tableView->columnWidth(0);

ui->tableView->setColumnWidth(1,0.4*ii);    
ui->tableView->setColumnWidth(2,0.5*ii);

Третье: для этого удалите

ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

от вашего кода.

  • 0
    strech работал спасибо, но ui-> tableView-> columnWidth (0); возвращает 0
  • 0
    @saeedhardan, потому что вы используете его до setModel, ваш tableView ничего не имеет, поэтому вы получаете 0. Смотрите мое редактирование, пожалуйста, я написал решение.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню