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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: нажатие на QPushButton  (Прочитано 28071 раз)
borik120
Гость
« : Сентябрь 20, 2010, 22:00 »

скажите пожалуйста, можно ли как либо не используя сигналы и слоты, обработать нажатие на кнопку QPushButton.
для примера: вот как если в visual studio, в редакторе форм щелкаешь дважды на элемент какой нибудь и сразу создается обработчик события.
как можно реализовать такое с помощью Qt?
заранее спасибо


Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Сентябрь 20, 2010, 22:04 »

Забудьте то что знали раньше. Делайте все вручную. Расширяйте кругозор!  Подмигивающий
Записан

ArchLinux x86_64 / Win10 64 bit
noirhor
Гость
« Ответ #2 : Сентябрь 20, 2010, 22:48 »

если в visual studio, в редакторе форм щелкаешь дважды на элемент какой нибудь и сразу создается обработчик события.
как можно реализовать такое с помощью Qt?

ПКМ -> Перейти в слоту...
Записан
borik120
Гость
« Ответ #3 : Сентябрь 21, 2010, 14:03 »

а если я кнопку програмно создаю?
Записан
Alex_cs_gsp
Гость
« Ответ #4 : Сентябрь 21, 2010, 14:12 »

а если я кнопку програмно создаю?


А как, если в студии кнопку программно создаешь? Тут аналогично - руками.
Записан
borik120
Гость
« Ответ #5 : Сентябрь 21, 2010, 14:48 »

да понятно, что руками,а код то какой?
Записан
Alex_cs_gsp
Гость
« Ответ #6 : Сентябрь 21, 2010, 15:03 »

да понятно, что руками,а код то какой?

    QPushButton btn;
    QObject::connect(&btn, SIGNAL(clicked()), pMyObj, SLOT(slotMySlot()));
Записан
borik120
Гость
« Ответ #7 : Сентябрь 21, 2010, 15:12 »

Цитировать
скажите пожалуйста, можно ли как либо не используя сигналы и слоты
мне интересно, как можно сделать это без сигналов и слотов. а как обычная обработка нажатия на кнопку в вижуал студио.

Код:
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
{
//обработка события
}
вот таким образом, не используя сигналов
« Последнее редактирование: Сентябрь 21, 2010, 15:16 от borik120 » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #8 : Сентябрь 21, 2010, 15:22 »

Это:
http://www.prog.org.ru/topic_14837_0.html
http://www.prog.org.ru/topic_1113_0.html

и т.п.?
Записан

ArchLinux x86_64 / Win10 64 bit
Kolobok
Гость
« Ответ #9 : Сентябрь 21, 2010, 15:29 »

Код:
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
{
//обработка события
}
вот таким образом, не используя сигналов

Можно и так. А зачем? Посмотри
Код:
void QObject::installEventFilter ( QObject * filterObj )
Записан
noirhor
Гость
« Ответ #10 : Сентябрь 21, 2010, 15:33 »

да понятно, что руками,а код то какой?
Если вы по непонятным причинам, вдруг, хотите сделать то же, что создалось автоматически, то:
Цитировать
private slots:
    void on_pushButton_clicked();
Цитировать
void MainWindow::on_pushButton_clicked() { }
Сигналы со слотами коннектятся автоматически в setupUi():
Цитировать
QMetaObject::connectSlotsByName(MainWindow);

мне интересно, как можно сделать это без сигналов и слотов. а как обычная обработка нажатия на кнопку в вижуал студио.
Но зачем? Объясните в чем для вас разница между автоматическим созданием слота и автоматическим созданием события.
Записан
borik120
Гость
« Ответ #11 : Сентябрь 21, 2010, 15:49 »

Цитировать
Если вы по непонятным причинам, вдруг, хотите сделать то же, что создалось автоматически, то:
мне кажется я что то сильно не догоняю.
пусть этот слот создался автоматически, тогда где мне можно написать обработку события для нажатия на этой кнопке?

извиняюсь, может опять что то не так "сморозил"
Записан
noirhor
Гость
« Ответ #12 : Сентябрь 21, 2010, 15:59 »

где мне можно написать обработку события для нажатия на этой кнопке?
Здесь же:
Цитировать
void MainWindow::on_pushButton_clicked() { }

В общем я также вас не понимаю. Возможно ваш пример
если в visual studio, в редакторе форм щелкаешь дважды на элемент
меня смутил.
Записан
Denjs
Гость
« Ответ #13 : Сентябрь 21, 2010, 16:06 »

можно ли как либо не используя сигналы и слоты, обработать нажатие на кнопку QPushButton.
вы батенька извращенец? мазохист? любите устраивать себе геморрой?  Смеющийся

в прямую - никак)
обходной способ - поставьте фильтр событий  на виджет и отслеживайте события нажатия мыши.

Цитировать
вот как если в visual studio, в редакторе форм щелкаешь дважды на элемент какой нибудь и сразу создается обработчик события.
как можно реализовать такое с помощью Qt?
В редакторе форм, вызываете контестное меню для нужного вам элемента (для кнопки например) и там есть пунктик - "перейти к слоту".
выбираете слот который вы хотите обрабатывать - и в классе формы создается слот, который автоматически будет подключен к соответствующему сигналу при загрузке .ui-формы.


вы лучше объясните - чем вас так пугает сигнал-слотовый механизм?
« Последнее редактирование: Сентябрь 21, 2010, 16:12 от Denjs » Записан
borik120
Гость
« Ответ #14 : Сентябрь 21, 2010, 16:25 »

Цитировать
вы лучше объясните - чем вас так пугает сигнал-слотовый механизм?
только без смеха)
я вот знаю, что сигнал будет от кнопки. а вот где слот создавать не пойму. в отдельном классе? или можо его просто обьявить? не пойму и все.
ну вот конкретно в моем случае. есть кнопка на форме и QLineEdit. мне нужно просто при нажатии на кнопку записать текст из QLineEdit в переменную стринг. и все. но не пойму я, где слот создавать.
можно смеяться)

Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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