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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [3.x]MainWindow, centralWidget и toolBars  (Прочитано 4448 раз)
i9
Гость
« : Январь 17, 2006, 17:48 »

Дано:
Код:
myMainWindow::myMainWindow( ... ) : QMainWindow( ... ){
  QTable *table = new myTable( this ); //таблица и ее инициализация чем-то
  setCentralWidget( table );
  QToolBar *tb = new QToolBar( this ); //тулбар
//  show();
 table->setCurrentCell( table->numRows()-1, 0 );//на последнюю строку
}
если show() раскоментарить, то работает замечательно, т.е. окно, в нем таблица с последней текущей строкой и тулбар сверху... Но show() в конструкторе - некрасиво. А без него что-то не перещитывает свой размер и получается, что текущая(последняя) строка не показывается на высоту тулбара. Видать внутри show() что-то вызывается типа adjustSize(), но что? Может кто сталкивался?
P.S. Qt3
« Последнее редактирование: Январь 06, 2008, 13:11 от Вячеслав » Записан
Steven_Orko
Гость
« Ответ #1 : Январь 18, 2006, 08:31 »

А если сначала создать QToolBar, а потом уже QTable?
Записан
i9
Гость
« Ответ #2 : Январь 18, 2006, 10:07 »

Цитата: "Steven_Orko"
А если сначала создать QToolBar, а потом уже QTable?

Пробывал, такой же результат. :cry:
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #3 : Январь 18, 2006, 10:48 »

а что мешает adjustSize() вне конструктора вызывать?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
i9
Гость
« Ответ #4 : Январь 18, 2006, 11:53 »

Цитата: "Racheengel"
а что мешает adjustSize() вне конструктора вызывать?

А где бы это можно было попробовать (в какой функции), так чтобы после конструктора, но до show(), т.к. после show() оно все работает, видать в нем какраз вызывается что-то типа adjustSize().

PS Внутри конструктора делал adjustSize() всему, делал resize() окна, по идее должно ведь оно пересчитывать размеры всех дочерних видгетов..., а на практике получается что пересчет размеров с учетом dock обастей происходит только в show().
Записан
yshurik
Гость
« Ответ #5 : Январь 18, 2006, 18:26 »

Цитата: "i9"

А где бы это можно было попробовать (в какой функции), так чтобы после конструктора, но до show(), т.к. после show() оно все работает, видать в нем какраз вызывается что-то типа adjustSize().


main.cpp ты ведь сам пишешь? вот там и решай когда show() а когда adjustSize() вызывать. Можешь сделать в следующем eventLoop если напишешь

QTimer::singleShot(0, this, SLOT(adjustSize()));

или еще каким подобным способом.
Записан
i9
Гость
« Ответ #6 : Январь 18, 2006, 20:16 »

Цитата: "yshurik"

main.cpp ты ведь сам пишешь? вот там и решай когда show() а когда adjustSize() вызывать. Можешь сделать в следующем eventLoop если напишешь

QTimer::singleShot(0, this, SLOT(adjustSize()));

или еще каким подобным способом.

Да я в принципе перегрузил show() у myMainWindow и туда впихнул переход на последнюю строку, Просто хотелось бы в конструкторе более менее по человечески сделать, а не обходными путями...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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