Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Окно на базе QMainWindow и центральный виджет 
V
    Опции темы
m9yt
Дата 8.11.2010, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 27.2.2010

Репутация: нет
Всего: нет



Всем привет. У меня новая проблема 
Создаю окно на базе QMainWindow и кидаю на него, к примеру, кнопку.
Далее, создаю класс Widget на базе QWidget и делаю следующее:
Цитата

После создания нового класса его необходимо установить центральным виджетом. Для этого в конструкторе класса главного окна, после вызова ui.setupUi(this); необходимо добавить следующий код:
Код

MyCentralWidget *centralWidget = new MyCentralWidget(this);
this->setCentralWidget(centralWidget);

где MyCentralWidget это созданный выше класс.
Для того, чтобы сигналы передавались центральному виджету в конструкторе класса MyCentralWidget необходимо захватить фокус вызовом метода
this->setFocus();

Всё делаю, но на форме кнопку не вижу!
Как сделать, чтобы она появилась?
PM MAIL   Вверх
SABROG
Дата 9.11.2010, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(m9yt @  8.11.2010,  20:53 Найти цитируемый пост)
Для того, чтобы сигналы передавались центральному виджету в конструкторе класса MyCentralWidget необходимо захватить фокус вызовом метода
this->setFocus();


Причем здесь фокус и сигналы? Сигналы работают благодаря основному циклу событий или мета-объектной системе, фокус тут ни при чем.

Цитата(m9yt @  8.11.2010,  20:53 Найти цитируемый пост)
MyCentralWidget *centralWidget = new MyCentralWidget(this);

Передавать this в качестве родителя не нужно, QMainWindow::setCentralWidget() автоматически делает виджет ребенком.

Цитата(m9yt @  8.11.2010,  20:53 Найти цитируемый пост)
Как сделать, чтобы она появилась? 

Покажи код полностью.

Если ты ставишь центральный виджет из кода, то все контролы которые ты добавил через дизайнер отображаться не будут, так как у QMainWindow свой центральный виджет, который автоматически удаляется при установке нового.

Это сообщение отредактировал(а) SABROG - 9.11.2010, 12:22


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
m9yt
Дата 9.11.2010, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 27.2.2010

Репутация: нет
Всего: нет



Цитата(SABROG @ 9.11.2010,  12:16)
Если ты ставишь центральный виджет из кода, то все контролы которые ты добавил через дизайнер отображаться не будут, так как у QMainWindow свой центральный виджет, который автоматически удаляется при установке нового.

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


Это сообщение отредактировал(а) m9yt - 9.11.2010, 12:51
PM MAIL   Вверх
SABROG
Дата 9.11.2010, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(m9yt @  9.11.2010,  12:37 Найти цитируемый пост)
Дизайнер бесполезен?

Можно выбрать в дизайнере на виджете, который должен быть новым "Центральным виджетом" меню "Преобразовать в..." и указать заголовочный файл со своим классом.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0746 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.