crossplatform.ru

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

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();
}

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


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

Группа: Участник
Сообщений: 2943
Регистрация: 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


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

Группа: Участник
Сообщений: 2943
Регистрация: 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


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

Группа: Участник
Сообщений: 2943
Регистрация: 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


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

Группа: Участник
Сообщений: 2943
Регистрация: 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


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

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

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




Репутация:   34  


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

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

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

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


Студент
*

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

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




Репутация:   0  


В том то и дело что у меня не работает, диалоги работают, а виджеты нет.
Сделал новы

Сделал новый класс, файлики появились, через дизайнер накидал виджеты , вывожу виджет, а он пустой.
Вот и спрашиваю как, раз пустой может как то не так вызываю его?

Вот исходники что бы было понятней.
Прикрепленные файлы
Прикрепленный файл  fcc.zip ( 5.52 килобайт ) Кол-во скачиваний: 96
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 4.3.2013, 12:30
Сообщение #12


Старейший участник
****

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

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




Репутация:   8  


residuesCenterForm widget(this);
residuesFilialForm widget(this);


Нельзя создавать виджет на стеке. Нужно в куче:
residuesCenterForm *widget = new residuesCenterForm;


Сообщение отредактировал lanz - 4.3.2013, 12:30
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
electronik
  опции профиля:
сообщение 4.3.2013, 13:02
Сообщение #13


Студент
*

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

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




Репутация:   0  


Странно, пробовал так, но почему то не работало, а сейчас заработало. Спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 15.6.2025, 3:42