crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> mdiArea как работать с виджетами
electronik
  опции профиля:
сообщение 26.2.2013, 17:18
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 23
Регистрация: 16.6.2012
Пользователь №: 3424

Спасибо сказали: 1 раз(а)




Репутация:   0  


в MainWindow создаю
void MainWindow::openDialog(){
    qDebug() << "Click!!!";
    QWidget *widget = new QWidget;
    mdiArea->addSubWindow(widget);
    widget->show();
}


тогда появляется пустой виджет.
Но если через QtCreator создаю новый виджет и пытаюсь его вызвать, но ничего не работает.
void MainWindow::openDialog(){
    qDebug() << "Click!!!";
    residuesCentrWidget widget(this);
    mdiArea->addSubWindow(widget);
    widget->show();
}

Подскажите пожалуйста как решить эту проблему.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 26.2.2013, 17:30
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


что означает
1) через QtCreator создаю новый виджет
2) ничего не работает - это что именно ?

содержимое консоли вывода что показывает при компиляции? Или программа запускается, но ничего не показывается ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
electronik
  опции профиля:
сообщение 26.2.2013, 17:54
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 23
Регистрация: 16.6.2012
Пользователь №: 3424

Спасибо сказали: 1 раз(а)




Репутация:   0  


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&)'
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 26.2.2013, 18:00
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


mdiArea->addSubWindow(&widget);

а ему указатель надо, а не ссылку

только у тебя после выхода из функции всё упадёт ) Догадаешься, почему ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
electronik
  опции профиля:
сообщение 26.2.2013, 18:15
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 23
Регистрация: 16.6.2012
Пользователь №: 3424

Спасибо сказали: 1 раз(а)




Репутация:   0  


Спасибо! Заработало!!!
Ничего не упало. А почему должно было упасть?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 26.2.2013, 18:24
Сообщение #6


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


потому что нужно на куче создавать такой виджет, ведь show() - не модальный режим показа

    residuesCentrWidget* widget=residuesCentrWidget(this);
    mdiArea->addSubWindow(widget);
    widget->show();


почему не упало - загадка :) Скорее всего, просто виджет пропал без последствий с заботливой подачи Qt
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
electronik
  опции профиля:
сообщение 26.2.2013, 18:29
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 23
Регистрация: 16.6.2012
Пользователь №: 3424

Спасибо сказали: 1 раз(а)




Репутация:   0  


[quote]потому что нужно на куче создавать такой виджет[/quote
Это как?
И еще, виджет вызывается, но почему то пустой.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 1.3.2013, 19:49
Сообщение #8


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


electronik, на куче - это оператором new. Смотри самый первый пост этой темы, верхний блок кода - там всё правильно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
electronik
  опции профиля:
сообщение 2.3.2013, 18:05
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 23
Регистрация: 16.6.2012
Пользователь №: 3424

Спасибо сказали: 1 раз(а)




Репутация:   0  


А как мне вывести виджет созданные через QtCreator?
Создаю "Класс формы Qt Desinger", выбираю "Widget". Как с ними работать? Или все виджеты в ручную создавать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 3.3.2013, 22:30
Сообщение #10


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


я не понимаю вопрос.

что значит "вывести виджет" ?

Когда визард (или ты сам, вручную) создаёт класс формы, в проекте появляются файлы с именем класса - h, cpp, ui

чтобы где-то иметь доступ к описанию класа, инклудишь заголовочник этого класса. И вперёд )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.11.2024, 17:45