в MainWindow создаю
void MainWindow::openDialog(){
qDebug() << "Click!!!";
QWidget *widget = new QWidget;
mdiArea->addSubWindow(widget);
widget->show();
}
void MainWindow::openDialog(){
qDebug() << "Click!!!";
residuesCentrWidget widget(this);
mdiArea->addSubWindow(widget);
widget->show();
}
что означает
1) через QtCreator создаю новый виджет
2) ничего не работает - это что именно ?
содержимое консоли вывода что показывает при компиляции? Или программа запускается, но ничего не показывается ?
1) Создаю "Класс формы Qt Desinger", выбираю "Widget".
2) Не компилируется
D:\Devel\fcc\mainwindow.cpp:-1: In member function 'void MainWindow::openDialog()':
D:\Devel\fcc\mainwindow.cpp:34: ошибка: no matching function for call to 'QMdiArea::addSubWindow(residuesCentrWidget&)'
mdiArea->addSubWindow(&widget);
а ему указатель надо, а не ссылку
только у тебя после выхода из функции всё упадёт ) Догадаешься, почему ?
Спасибо! Заработало!!!
Ничего не упало. А почему должно было упасть?
потому что нужно на куче создавать такой виджет, ведь show() - не модальный режим показа
residuesCentrWidget* widget=residuesCentrWidget(this);
mdiArea->addSubWindow(widget);
widget->show();
[quote]потому что нужно на куче создавать такой виджет[/quote
Это как?
И еще, виджет вызывается, но почему то пустой.
electronik, на куче - это оператором new. Смотри самый первый пост этой темы, верхний блок кода - там всё правильно
А как мне вывести виджет созданные через QtCreator?
Создаю "Класс формы Qt Desinger", выбираю "Widget". Как с ними работать? Или все виджеты в ручную создавать?
я не понимаю вопрос.
что значит "вывести виджет" ?
Когда визард (или ты сам, вручную) создаёт класс формы, в проекте появляются файлы с именем класса - h, cpp, ui
чтобы где-то иметь доступ к описанию класа, инклудишь заголовочник этого класса. И вперёд )
В том то и дело что у меня не работает, диалоги работают, а виджеты нет.
Сделал новы
Сделал новый класс, файлики появились, через дизайнер накидал виджеты , вывожу виджет, а он пустой.
Вот и спрашиваю как, раз пустой может как то не так вызываю его?
Вот исходники что бы было понятней.
residuesCenterForm widget(this);
residuesFilialForm widget(this);
residuesCenterForm *widget = new residuesCenterForm;
Странно, пробовал так, но почему то не работало, а сейчас заработало. Спасибо!
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)