Russian Qt Forum
Март 29, 2024, 14:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Управление объектом  (Прочитано 10856 раз)
ruzik
Гость
« : Февраль 09, 2011, 14:52 »

Здравствуйте, не подскажите как сделать
Я в конструкторе класса объявляю lineEdit, далее мне нужно через событие сделать с этим объектом что-то, но в событии он не определяется,
и его ни как не передашь, ведь это событие, можно конечно объявить глобальный указатель на этот объект, но есть ли более удачное решение данной проблемы
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Февраль 09, 2011, 14:55 »

Что-то вообще ничего не понятно. Давай подробнее и с кодом.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ruzik
Гость
« Ответ #2 : Февраль 09, 2011, 15:43 »

Для начала у меня есть класс
Код:
class MyBr : public QMainWindow, public Ui::MyBrClass
{
Q_OBJECT

public:
MyBr(QWidget *parent = 0, Qt::WFlags flags = 0);
~MyBr();
public slots:
void load(QString a);
signals:
void FormResize();
protected:
void resizeEvent( QResizeEvent* );
};
В его конструкторе я объявляю кучу виджетов и тп
Код:
MyBr::MyBr(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
setupUi(this);
this->setWindowTitle(tr("Web-Rizek 2.0"));
QPushButton * PrevButton = new QPushButton;
PrevButton->setText("<-");
PrevButton->setFixedWidth(30);
PrevButton->setToolTip(tr("Go back"));
QPushButton * Refresh = new QPushButton;
Refresh->setText("(%)");
Refresh->setFixedWidth(30);
Refresh->setToolTip(tr("Refresh"));
QPushButton * NextButton = new QPushButton;
NextButton->setText("->");
NextButton->setFixedWidth(30);
NextButton->setToolTip(tr("Go next"));
QLineEdit * Address = new QLineEdit;
Address->setFixedWidth(400);
Address->setToolTip(tr("Adress of your site"));
QPushButton * Go = new QPushButton;
Go->setText(tr("Go!"));
Go->setFixedWidth(35);
Go->setToolTip(tr("Go"));
QPushButton * StopButton = new QPushButton;
StopButton->setText("X");
StopButton->setFixedWidth(30);
StopButton->setToolTip(tr("Stop"));



//*******************
mainToolBar->addWidget(PrevButton);
mainToolBar->addWidget(Refresh);
mainToolBar->addWidget(NextButton);
mainToolBar->addWidget(StopButton);
mainToolBar->addWidget(Address);
mainToolBar->addWidget(Go);
//*******************
//==========================
connect(PrevButton, SIGNAL(clicked()), webView , SLOT(back()));
connect(NextButton, SIGNAL( clicked()), webView , SLOT(forward()));
connect(Refresh , SIGNAL(clicked()), webView, SLOT(Refresh()));
connect(StopButton, SIGNAL(clicked()), webView, SLOT(stop()));
connect(Go , SIGNAL(clicked()), this , SLOT(load()));
//==========================
}
И мне надо в
void MyBr::resizeEvent( QResizeEvent* )
сделать некоторые действия с Address, который объявлен в конструкторе, но resizeEvent- это событие, и ему не получится передать указатель на Address
Записан
Fat-Zer
Гость
« Ответ #3 : Февраль 09, 2011, 15:56 »

из того, что сразу бросается в глаза:
1) зачем множественное наследование...
2) покажите как определяете resizeEvent, раз уж в нём проблемма
3) объявите Address членом класса
4) не понятно зачем вам Ui, если вы всё равно дезайнером не пользуетесь
ещё замечанеий набросать можно наверное несколько штук, если присмотреться... И после таких вопросов/такого кода обычно посылают читать книжки по ООП/С++...
« Последнее редактирование: Февраль 09, 2011, 16:02 от Fat-Zer » Записан
ruzik
Гость
« Ответ #4 : Февраль 09, 2011, 16:01 »

1)Так в книжке написано  Смеющийся
2)В классе
protected:
   void resizeEvent( QResizeEvent* );<- просто объвление
Расписывание:
void MyBr::resizeEvent( QResizeEvent* )
{
   emit FormResize();
   webView->setFixedWidth(this->width());
   webView->setFixedHeight(this->height()-mainToolBar->height());   
}
3)Я в конструкторе его объявляю QLineEdit * Address = new QLineEdit;
4)Далеко не все, процентов 40% виджетов, а в будущем больше, как раз в дизайнере, просто я не знаю как там добавить кнопки в toolbar, вот и решил что добавлю на уровне кода)
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Февраль 09, 2011, 16:13 »

ещё замечаней набросать можно штуки 3-7... И после таких вопросов/такого кода обычно посылают читать книжки по ООП/С++...
Помню поставил я новый компилятор. Смотрю есть опция типа "проверить на грамотность С++" (выливает в текстовый файл). Ну я (бодро) ее включил. Мдааа..  Улыбающийся Я понял что не стоит мнить себя асом, тем более кого-то "посылать" - на мою "крутизну" найдется еще круче.

По существу:

- множественное наследование не криминал, но (в данном случае) Ui::MyBrClass не может быть потомком QObject - обычно это сужает возможности

- проще объявить (m)Address членом класса - раз уж планируется с ним что-то делать
Записан
ruzik
Гость
« Ответ #6 : Февраль 09, 2011, 16:17 »

Спасибо, наверно так и сделаю, раз уж нельзя сделать по-другому при моем уровне знаний
Записан
Fat-Zer
Гость
« Ответ #7 : Февраль 09, 2011, 16:19 »

3) заметил, поправился, но вовремя не успел...

//оффтоп
Помню поставил я новый компилятор. Смотрю есть опция типа "проверить на грамотность С++" (выливает в текстовый файл). Ну я (бодро) ее включил. Мдааа..  Улыбающийся Я понял что не стоит мнить себя асом, тем более кого-то "посылать" - на мою "крутизну" найдется еще круче.
А что за компилятор такой?
« Последнее редактирование: Февраль 09, 2011, 16:21 от Fat-Zer » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Февраль 09, 2011, 16:24 »

Спасибо, наверно так и сделаю, раз уж нельзя сделать по-другому при моем уровне знаний
Не стоит "посыпать голову пеплом" :-) Мое личное/субъективное мнение - увлекаться дизайнером не нужно (на первых порах). Создать все "руками" не так сложно как может сначала показаться, зато все в Ваших руках и Вы хорошо понимаете что сделано.
Записан
brankovic
Гость
« Ответ #9 : Февраль 10, 2011, 01:25 »

А что за компилятор такой?

ставлю полтиник, что от микрософт.. их хлебом не корми, дай других попроверять Подмигивающий

Я тоже однажды обновил компилятор, и пошёл собирать какую-то программу с -Wall -Werror, как обычно. И вдруг он мне выдаёт кучу варнингов, они превращаются в ошибки и ничего не компилится. Оказывается, теперь по мнению gcc "предпочтительно ставить скобки в выражении, где присутствуют || и &&". А я всегда знал приоритет операций и скобки не ставил. А теперь должен почему-то. Вот так из-за полезных и нужных "проверок на грамотность" страдают грамотные люди..
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #10 : Февраль 10, 2011, 14:21 »

ставлю полтиник, что от микрософт.. их хлебом не корми, дай других попроверять Подмигивающий
Гоните полтинник - проиграли  Улыбающийся Не микрософт и не gcc.

Я тоже однажды обновил компилятор, и пошёл собирать какую-то программу с -Wall -Werror, как обычно. И вдруг он мне выдаёт кучу варнингов, они превращаются в ошибки и ничего не компилится. Оказывается, теперь по мнению gcc "предпочтительно ставить скобки в выражении, где присутствуют || и &&". А я всегда знал приоритет операций и скобки не ставил. А теперь должен почему-то. Вот так из-за полезных и нужных "проверок на грамотность" страдают грамотные люди..
Нет, этот мне указал все "по делу". Ну кое-где конечно "зависит от вкуса как писать", но с подавляющим большинством его замечаний я вынужден был согласиться.
Записан
brankovic
Гость
« Ответ #11 : Февраль 11, 2011, 08:57 »

ставлю полтиник, что от микрософт.. их хлебом не корми, дай других попроверять Подмигивающий
Гоните полтинник - проиграли  Улыбающийся Не микрософт и не gcc.

ооо.. тогда что-же? Для Borland это не в их стиле вроде. Ваком и так еле-еле жил, но может они? Или.. о нет, неужели КАМЯУ?!! В общем пруфлинк в студию..
Записан
Fat-Zer
Гость
« Ответ #12 : Февраль 11, 2011, 09:06 »

ещё версия - icc Непонимающий
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Февраль 11, 2011, 11:10 »

ещё версия - icc Непонимающий
Это правильный ответ  Улыбающийся

В общем пруфлинк в студию..
Ну я не обещал Вам чего-то подавать/доказывать  Улыбающийся
Триал версия доступна (под все платформы) - скачивайте, ставьте, смотрите. Не пожалеете - ВЕЩЬ!
Записан
brankovic
Гость
« Ответ #14 : Февраль 11, 2011, 23:36 »

ещё версия - icc Непонимающий
Это правильный ответ  Улыбающийся

Какое разочарование. Нет, я догадываюсь, что на свете много идиотов, верю даже, что и в интел их достаточно. Но грустно как-то всё же..

Ну я не обещал Вам чего-то подавать/доказывать  Улыбающийся
Триал версия доступна (под все платформы) - скачивайте, ставьте, смотрите. Не пожалеете - ВЕЩЬ!

Да что вы, уважаемый Igors, какие могут быть к Вам претензии или требования. Только хотел узнать "правильный ответ", но выразился не совсем корректно, извините.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.054 секунд. Запросов: 22.