Russian Qt Forum
Май 03, 2024, 16:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Пару вопросов по QTableWidget  (Прочитано 6540 раз)
Stiv
Гость
« : Сентябрь 07, 2011, 19:05 »

Доброго всем времени суток.
Есть таблица QTableWidget и есть заголовок её столбцов. Когда навожу курсор мыши на границу столбцов то он меняет форму и при двойном нажатии столбец меняет свою ширину в соответствии с надписью которая находится в заголовке таблицы. Вопрос как мне сделать ширину столбцов по названию при создании таблицы(чтоб это не ручками каждый раз делать при запуске программы)?

Вопрос второй. В таблицу по приходу данных с внешнего устройства эти данные обрабатываются и показываются в таблице т.е добавляется новая строка. Вопрос а какое максимальное кол-во строк можно отобразить в QTableWidget? Кол-во колонок 12 и в каждой ячейке таблицы отображается бвух байтное число.

P.S. И последнее вопрос не в тему ну тем немение. Как сделать так чтоб при отладке программы изменялась и форма? Я имею ввиду то что выполнении строк программы по создании таблицы таблица на форме не появляется.
Записан
Vass
Гость
« Ответ #1 : Сентябрь 07, 2011, 20:27 »

1. Получите header c помощью метода horizontalHeader()
установите режим ресайзинга секций вызвав для хедера метод setResizeMode (QHeaderView::ResizeToContents)
2. Теоретически пока не кончится память, практически, не стоит так делать.
3. Для того чтобы форма появилась в цикле событий должно обработаться событие отрисовки для виджета таблицы. пока вы стоите  дебаге на собственном коде - этого не произойдет.
« Последнее редактирование: Сентябрь 07, 2011, 23:31 от Vass » Записан
Stiv
Гость
« Ответ #2 : Сентябрь 08, 2011, 08:53 »

Vass метода setResizeMode для QTableWidget  нет. Этот метод есть для объектов класса QHeaderView. И объекты
QHeaderView используются для установки хедеров в QTableView и QTreeView.
В труде Макса Шлее того что мне надо не написанно.
А можно пример в коде для установки ширины столбцов по названиям для таблицы QTableWidget.
Вот тот код который у меня есть:

QStringList a;
QTableWidgetItem *cell;
ui->tableWidget->setColumnCount(3);
ui->tableWidget->setRowCount(3);
a<<"RTR"<<"DLC"<<"SID";
ui->tableWidget->setHorizontalHeaderLabels(a);
ui->tableWidget->horizontalHeader();
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #3 : Сентябрь 08, 2011, 10:36 »

class QTableWidget : public QTableView
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Stiv
Гость
« Ответ #4 : Сентябрь 08, 2011, 11:32 »

Последний пост запутал меня совсем.
Можно пример привести пожалуйста.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #5 : Сентябрь 08, 2011, 13:11 »

это означает, что все, что есть в QTableView, есть и в QTableWidget
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Vass
Гость
« Ответ #6 : Сентябрь 08, 2011, 13:59 »

Vass метода setResizeMode для QTableWidget  нет. Этот метод есть для объектов класса QHeaderView. И объекты
QHeaderView используются для установки хедеров в QTableView и QTreeView.

А внимательно прочитать что я написал?

Записан
Stiv
Гость
« Ответ #7 : Сентябрь 08, 2011, 14:52 »

Цитировать
А внимательно прочитать что я написал?
Vass прочитал внимательнее что вы написали, вроде что то прояснилось, но не совсем
Сказывается плохое знание си++. Хочется ж своей головой дойти, ибо когда покажут код
толк от обучения будет 0.
Как я понял надо создать объект QHeaderView, получить значения с таблицы и потом вызвать метод
setResizeMode (QHeaderView::ResizeToContents). Но первое выполнить не получается. Значит я чего-то недопонимаю.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #8 : Сентябрь 08, 2011, 15:01 »

Код
C++ (Qt)
QTableWidget *tableWidget;
tableWidget->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Stiv
Гость
« Ответ #9 : Сентябрь 08, 2011, 15:06 »

При написании ответа комп завис, и как я увидел написали ответ.
И я до него сам дошёл
ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);
Всем спасибо огромное, тема закрыта.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.073 секунд. Запросов: 22.