Название: нажатие на QPushButton Отправлено: borik120 от Сентябрь 20, 2010, 22:00 скажите пожалуйста, можно ли как либо не используя сигналы и слоты, обработать нажатие на кнопку QPushButton.
для примера: вот как если в visual studio, в редакторе форм щелкаешь дважды на элемент какой нибудь и сразу создается обработчик события. как можно реализовать такое с помощью Qt? заранее спасибо Название: Re: нажатие на QPushButton Отправлено: kuzulis от Сентябрь 20, 2010, 22:04 Забудьте то что знали раньше. Делайте все вручную. Расширяйте кругозор! ;)
Название: Re: нажатие на QPushButton Отправлено: noirhor от Сентябрь 20, 2010, 22:48 если в visual studio, в редакторе форм щелкаешь дважды на элемент какой нибудь и сразу создается обработчик события. как можно реализовать такое с помощью Qt? ПКМ -> Перейти в слоту... Название: Re: нажатие на QPushButton Отправлено: borik120 от Сентябрь 21, 2010, 14:03 а если я кнопку програмно создаю?
Название: Re: нажатие на QPushButton Отправлено: Alex_cs_gsp от Сентябрь 21, 2010, 14:12 а если я кнопку програмно создаю? А как, если в студии кнопку программно создаешь? Тут аналогично - руками. Название: Re: нажатие на QPushButton Отправлено: borik120 от Сентябрь 21, 2010, 14:48 да понятно, что руками,а код то какой?
Название: Re: нажатие на QPushButton Отправлено: Alex_cs_gsp от Сентябрь 21, 2010, 15:03 да понятно, что руками,а код то какой? QPushButton btn; QObject::connect(&btn, SIGNAL(clicked()), pMyObj, SLOT(slotMySlot())); Название: Re: нажатие на QPushButton Отправлено: borik120 от Сентябрь 21, 2010, 15:12 Цитировать скажите пожалуйста, можно ли как либо не используя сигналы и слоты мне интересно, как можно сделать это без сигналов и слотов. а как обычная обработка нажатия на кнопку в вижуал студио.Код: private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) Название: Re: нажатие на QPushButton Отправлено: kuzulis от Сентябрь 21, 2010, 15:22 Это:
http://www.prog.org.ru/topic_14837_0.html http://www.prog.org.ru/topic_1113_0.html и т.п.? Название: Re: нажатие на QPushButton Отправлено: Kolobok от Сентябрь 21, 2010, 15:29 Код: private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) Можно и так. А зачем? Посмотри Код: void QObject::installEventFilter ( QObject * filterObj ) Название: Re: нажатие на QPushButton Отправлено: noirhor от Сентябрь 21, 2010, 15:33 да понятно, что руками,а код то какой? Если вы по непонятным причинам, вдруг, хотите сделать то же, что создалось автоматически, то:Цитировать private slots: void on_pushButton_clicked(); Цитировать void MainWindow::on_pushButton_clicked() { } Сигналы со слотами коннектятся автоматически в setupUi():Цитировать QMetaObject::connectSlotsByName(MainWindow); мне интересно, как можно сделать это без сигналов и слотов. а как обычная обработка нажатия на кнопку в вижуал студио. Но зачем? Объясните в чем для вас разница между автоматическим созданием слота и автоматическим созданием события.Название: Re: нажатие на QPushButton Отправлено: borik120 от Сентябрь 21, 2010, 15:49 Цитировать Если вы по непонятным причинам, вдруг, хотите сделать то же, что создалось автоматически, то: мне кажется я что то сильно не догоняю.пусть этот слот создался автоматически, тогда где мне можно написать обработку события для нажатия на этой кнопке? извиняюсь, может опять что то не так "сморозил" Название: Re: нажатие на QPushButton Отправлено: noirhor от Сентябрь 21, 2010, 15:59 где мне можно написать обработку события для нажатия на этой кнопке? Здесь же:Цитировать void MainWindow::on_pushButton_clicked() { } В общем я также вас не понимаю. Возможно ваш пример если в visual studio, в редакторе форм щелкаешь дважды на элемент меня смутил.Название: Re: нажатие на QPushButton Отправлено: Denjs от Сентябрь 21, 2010, 16:06 можно ли как либо не используя сигналы и слоты, обработать нажатие на кнопку QPushButton. вы батенька извращенец? мазохист? любите устраивать себе геморрой? ;Dв прямую - никак) обходной способ - поставьте фильтр событий на виджет и отслеживайте события нажатия мыши. Цитировать вот как если в visual studio, в редакторе форм щелкаешь дважды на элемент какой нибудь и сразу создается обработчик события. В редакторе форм, вызываете контестное меню для нужного вам элемента (для кнопки например) и там есть пунктик - "перейти к слоту".как можно реализовать такое с помощью Qt? выбираете слот который вы хотите обрабатывать - и в классе формы создается слот, который автоматически будет подключен к соответствующему сигналу при загрузке .ui-формы. вы лучше объясните - чем вас так пугает сигнал-слотовый механизм? Название: Re: нажатие на QPushButton Отправлено: borik120 от Сентябрь 21, 2010, 16:25 Цитировать вы лучше объясните - чем вас так пугает сигнал-слотовый механизм? только без смеха)я вот знаю, что сигнал будет от кнопки. а вот где слот создавать не пойму. в отдельном классе? или можо его просто обьявить? не пойму и все. ну вот конкретно в моем случае. есть кнопка на форме и QLineEdit. мне нужно просто при нажатии на кнопку записать текст из QLineEdit в переменную стринг. и все. но не пойму я, где слот создавать. можно смеяться) Название: Re: нажатие на QPushButton Отправлено: Denjs от Сентябрь 21, 2010, 16:42 Цитировать вы лучше объясните - чем вас так пугает сигнал-слотовый механизм? только без смеха)я вот знаю, что сигнал будет от кнопки. а вот где слот создавать не пойму. в отдельном классе? или можо его просто обьявить? не пойму и все. ну вот конкретно в моем случае. есть кнопка на форме и QLineEdit. мне нужно просто при нажатии на кнопку записать текст из QLineEdit в переменную стринг. и все. но не пойму я, где слот создавать. можно смеяться) Слот - это метод класса который вызывается когда испускается сигнал, который подключили к данному слоту. Слоты определяются в секции slots при определении класса. Где определять слот? В любом классе. Хотите - в том-же, на который вы натягиваете .ui, хотите - в любом другом. Можно даже одновременно - подключить один сигнал к слотам 2-х обхъектов. и они оба будут вызываться при нажатии на кнопку. Можно динамически переподключить к другому объекту, на другой слот. (чуете мощь? чуете насколько VS/MFC и идеология "обработчика нажатия" убоги по сравнению с этим? )))) ;D Название: Re: нажатие на QPushButton Отправлено: Авварон от Сентябрь 21, 2010, 16:47 посмотрите примеры, идущие с Qt, многое прояснится.
слот создаете в классе, который будет являться контроллером формы. Обычно используется след схема: есть класс Ui::MyForm, который вы подключаете в хедере "ui_myform.h" и класс MyForm (наследующийся от QWidget/QMainWindow/QDialog), который содержит указатель на Ui::MyForm (или наследуется от него, или содержит как член класса). Этот 2й класс и управляет логикой поведения ГУИ и содержит необходимые сигналы и слоты, подключенные к элементам в Ui::MyForm Denjs что-то по беглому взгляду вся эта "мощь" слизана с обжектив-си:) Название: Re: нажатие на QPushButton Отправлено: Denjs от Сентябрь 21, 2010, 17:36 Denjs вот уж не знаю чем вдохновлялись Троллтеч при создании QT, но согласитесь - получилось клёво )что-то по беглому взгляду вся эта "мощь" слизана с обжектив-си:) Название: Re: нажатие на QPushButton Отправлено: Авварон от Сентябрь 21, 2010, 17:38 ну многие места разочаровывают - к примеру интерфейсы (а их реализация - это вооще жесть, там используются фичи с++, о которых я даже не слышал)
Название: Re: нажатие на QPushButton Отправлено: Пантер от Сентябрь 22, 2010, 12:31 В классе пишешь:
Код И коннектишь на него сигнал нажатия кнопки. И все. Советую почитать книжку по Кьюту. |