![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
RazrFalcon |
![]()
Сообщение
#1
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Есть к примеру таблица(QTableWidget). К ней обращаюсь из разных функций. То есть если к примеру:
могу обращятся к table только здесь, из другой функции не могу.Если делаю наоборот, глобально создаю: то сразу QWidget: Must construct a QApplication before a QPaintDeviceОшибка новичка, но не могу понять в чем проблема. Так как без дизайнера первый раз пишу. PS прошу сильно не пинать ![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
глобально создаю: Во-первых, глобальные объекты инициализируются до вызова функции main. А виджетам нужно, чтобы уже был создан объект QApplication.Во-вторых, нет никакой нужды делать таблицу глобальной. Обычно делают класс, например, MainWindow. И создают в нём объекты относящиеся к нему. Т.е. указатель на таблицу делают членом класса, и в конструкторе создают объект и им инициализируют указатель. Полезно пройтись по учебному пособию по виджетам Также рекомендую посмотреть длинное, но увлекательное и полезное учебное пособие из старой версии Qt Старое полезно тем, что там многое разобрано по косточкам, даны домашние задания, а в результате получаешь вполне законченную игру-стрелялку |
|
|
dreamcode |
![]()
Сообщение
#3
|
![]() Студент ![]() Группа: Участник Сообщений: 52 Регистрация: 2.11.2009 Пользователь №: 1201 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
В классе MainWindow определи поле QTableWidget* table
А потом в конструкторе класса MainWindow пиши table = new QTableWidget; и не забудь про table.show() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
RazrFalcon |
![]()
Сообщение
#5
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Почитал ссылки, ничего в принципе нового не открыл. Так и не нашел там нужного. Ну разве что через слоты?!
dreamcode, спасибо заработало. Я знал что решение простое ![]() Разве что дополню, что нужно именно: Иначе создается еще одно окно.Появилась проблема: Приводит к error: ISO C++ forbids declaration of ‘QTableWidget’ with no type ![]() В .h кинул #include <QTableWidget> и все завелось, еще раз всем спасибо. Хмм... Через несколько успешных компиляций выдало QMetaObject::connectSlotsByName: No matching signal for on_table_cellDoubleClicked(int,int) QMetaObject::connectSlotsByName: No matching signal for on_table_cellChanged(int,int) При условии что ничего особо не менял, только мелочи. Как сделать "Go To Slot" ("Перейти к слоту", у меня англ версия просто) программно, а не через дизайнер? Я так понимаю через слоты?! Сообщение отредактировал RazrFalcon - 22.8.2010, 11:28 |
|
|
BRE |
![]()
Сообщение
#6
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
RazrFalcon |
![]()
Сообщение
#7
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Не большие изменения, вместо одной таблицы сделал две? Оно сначала и с двумя компилило.![]() А имена слотов для автоконнекта поменять забыл. Об этом даже не знал, пойду читать. Про forward declaration почитал но так и не прояснил ничего. ![]() сделал так, ошибок 0 но, The program has unexpectedly finished.
Сообщение отредактировал RazrFalcon - 22.8.2010, 12:26 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
RazrFalcon |
![]()
Сообщение
#9
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#10
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 11.3.2025, 0:51 |