| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > QTable, мучаюсь с заголовком столбцов.. |
| Автор: Kurt 9.7.2005, 01:47 | ||
| Qt3. Пытаюсь разобраться с QTable. Создаю так (в конструкторе виджета):
Возникает проблемка с заголовками столбцов - я устанавливаю довольно большую высоту заголовка (50!), но названия все равно отрисовываются где-то там сверху (см. первый файл). И лишь когда я ставлю высоту хедера в 70 пикселей, он наконец-то соизволяет отобразиться, но при этом куча места под лейблом заголовка. (см. 2-й файл). Подскажите, что я делаю не так? Мне нужен обычный заголовок, чтоб лейблы влезали, а сам заголовок был чуть больше, чем надписи, к-е он содержит. Как убрать этот отступ снизу? 1) |
| Автор: Kurt 9.7.2005, 01:49 |
| 2) |
| Автор: Mayk 9.7.2005, 07:14 | ||
| На рисунке виден MenuBar, в коде нет. Если создаваемый виджет наследуется от QMainWindow, то замени 5ую строку на
Если таблица и иже с ней являются отдельным виджетом то смотри как этот самый виджет размещается. |
| Автор: Kurt 9.7.2005, 15:10 | ||||
Я не думал, что в данном случае это важно.
Нет, я наследуюсь просто от QWidget. Добавлено @ 15:17 Кстати, QMenuBar тоже следует добавлять в QVBoxLayout? Или это не обязательно? Я хочу, чтоб виджеты на форме располагались в один столбец - пока тут просто таблица (т.е. один виджет), но дальше будет хуже.. ээ.. т.е. лучше. Хотя пофиг, я и так и так пробовал - без изменений. |
| Автор: S.A.P. 9.7.2005, 15:33 |
| Попробуй для начала просто грубо вызвать setGeometry, сделать таблицу чуть пониже, может меню на заголовок заезжает... |
| Автор: Mayk 9.7.2005, 16:00 | ||||
Ага, допёрло. Никаких QDialog'ов и QMainWindow'ов нет...
Обязательно. Иначе у тебя два виджета ложатся на координату (0,0). |
| Автор: Kurt 9.7.2005, 16:27 | ||
| Блин, без MenuBar'а все ОК. Пытаюсь понять почему.. Кому интересно, вот полный код имплементации моего класса MainWindow (сделан специально для тестов
|
| Автор: Mayk 9.7.2005, 17:57 | ||
| Одназначно вопрос на 5. Такое ощущение, что QT использует заголовок окна как часть своего виджета. Зато если заменить setGeomertry() на setMinimumSize(300,200); move(100,100) всё работает А вообще используй QMainWindow, чтоб не мучаться Изменения:
|
| Автор: Kurt 9.7.2005, 21:40 | ||||||||||
| Что-то не то.. Наследовался от QMainWindow, сделал изменения, что ты указал. В итоге при запуске получаю:
Вот код, с к-м эксперементирую:
Причем, если строчку
меняю на
приложение запускается (с тем же траблом, что и послужил темой топика!), но вдобавок в терминале выводит:
Сейчас буду пробовать вариант с setMinimumSize() и move(), но как-то.. хм.. как минимум, некрасиво. Добавлено @ 21:48 Проверил. C setMinimumSize() и move() работает, но только для QWidget - для QMainWindow все тот же баг. |
| Автор: DrLazy 9.7.2005, 22:27 |
| Оффтопик конечно, но вот именно из за таких затыков и не использую "стандартные" библиотеки классов. |
| Автор: Mayk 10.7.2005, 05:30 | ||
Kurt
Вот это замени на _menuBar=menuBar(). |
| Автор: Kurt 10.7.2005, 10:02 |
| Понял. Благодарю. Все заработало. Хотя все же интересно с QWidget получилось.. |
| Автор: Kurt 11.7.2005, 18:33 |
| Не хочу ради этого создавать новый топик... Вот я добавил таблицу на QMainWindow. А как сделать, чтоб при изменении размеров окна таблица тоже изменялась? А то сейчас у нее статические размеры. Я думал, что этим как раз и занимается QVBoxLayout. Или тут нужен другой layout? Или надо какой-то сигнал обработать? |
| Автор: Mayk 11.7.2005, 20:04 | ||||
box=layout() выкидываем за ненадобностью.
Вот это заменяем на setCentralWidget(table). Теперь таблица стоит центральным виджетом и ресайзится на ура. Это плюс. Если делать на вырост, то можно создать QVBox, запихнуть в него Table, прочую ерунду и QVBox сделать центральным виджетом. Или альтернативный вариант - сделать новый класс MainWidget от QWidget'а, в нём делать что угодно, и запихать этот класс в MainWindow. А вот все эти телодвижения по созданию классов имхо минус... Особенно если MainWidget создавать. |
| Автор: Kurt 11.7.2005, 20:16 |
| Qt у меня сейчас нет (я не со своего компа пишу), но уточни - QVBoxLayout ВООБЩЕ убрать? |
| Автор: Mayk 11.7.2005, 21:06 |
| Да. Он более не нужен. |
| Автор: Kurt 12.7.2005, 00:08 |
| Все работает в лучшем виде! |