Сегфолт при смене центрального виджета QMainWindow |
Здравствуйте, гость ( Вход | Регистрация )
Сегфолт при смене центрального виджета QMainWindow |
Andrewshkovskii |
16.2.2009, 13:17
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Есть у меня QMainWindow. в нем отображается QWidget(MainWidget), c 3мя кнопочками. 1-ая кнопочка - Делает центральным (setCentraWidget) ещё один QWindget(Test1Widget). в этом виджите 2 кнопочки, одна не активна пока-что, другая должна возвращать фокус на MainWidget. делаю я это так :
описываю слот :
и соединяю с сигналом :
Но при нажатии кнопочки AbotTest1Button - приложение завершается с ошибкой. В чем проблема?Ведь я менял центральный на test1Widget без проблем, а обратно - фиг. Может надо закрывать не "централизованные" виджеты?Пробывал - тоже самое.. в чем может быть проблема? Сообщение отредактировал Litkevich Yuriy - 16.2.2009, 13:29
Причина редактирования: вместо параметра C++ используй cpp (англ.)
|
|
|
Andrewshkovskii |
16.2.2009, 14:00
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
void QMainWindow::setCentralWidget ( QWidget * widget )
Sets the given widget to be the main window's central widget. Note: QMainWindow takes ownership of the widget pointer and deletes it at the appropriate time. See also centralWidget(). .. Я так понимаю, вот эта строка : ".. of the widget pointer and deletes it at the appropriate time. " все и объясняет..как жеж быть? |
|
|
Litkevich Yuriy |
16.2.2009, 14:14
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
а зачем тебе вообще менять центральный виджет?
|
|
|
Andrewshkovskii |
16.2.2009, 14:15
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Ну есть центральный виджет, в нем 2 кнопочки :
Тест 1 Тест 2 Выход При нажатии Тест 1 в главном окне меняется виджет для этого теста. в нем будет QPaintDevice, 3 слайдера, 2 кнопочки. 1 - Ответить 2 - Назад в главное меню. Можно конечно сделать через отдельные виджеты каждое окошко..но как-то я хотел сделать вот так Сообщение отредактировал Andrewshkovskii - 16.2.2009, 14:17 |
|
|
Litkevich Yuriy |
16.2.2009, 14:17
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Andrewshkovskii |
16.2.2009, 14:20
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
Я нечайно там ctrl+Enter нажал, привыч перевода новой строки в qip)) там исправлено, посмотри.
|
|
|
Litkevich Yuriy |
16.2.2009, 14:20
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
поставь центральный виджет, на панель инструментов главного окна помести навигационные кнопки, а на центральный виджет положи стэк виджетов, на каждую станицу стэка положи связанное с конкретным тестом содержимое. Кнопками навигации будешь переключать страницы стэка виджетов.
|
|
|
Andrewshkovskii |
16.2.2009, 14:22
Сообщение
#8
|
Активный участник Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1 |
То есть решение попроще отсутствует?..
|
|
|
Litkevich Yuriy |
16.2.2009, 16:08
Сообщение
#9
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Litkevich Yuriy |
16.2.2009, 17:10
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
можешь и без панели инструментов:
в качестве центрального виджета ставишь стэк виджетов (QStackedWidget), на него свои кнопки и прочее, кнопки соединяешь с картой сигналов (QSignalMapper), а его сигнал со слотом смены страниц стэка виджетов: помоему все просто
|
|
|
Текстовая версия | Сейчас: 29.11.2024, 8:43 |