Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Alp от Сентябрь 10, 2010, 17:17



Название: Программно нажать кнопку
Отправлено: Alp от Сентябрь 10, 2010, 17:17
Помню, что была такая тема, но найти по "кликнуть кнопку программно" или "нажать кнопку не нашел.

Надо "кликнуть" по наследнику QWidget из кода. Как это сделать?


Название: Re: Программно нажать кнопку
Отправлено: Kolobok от Сентябрь 10, 2010, 17:23
bool QCoreApplication::sendEvent ( QObject * receiver, QEvent * event )
void QCoreApplication::postEvent ( QObject * receiver, QEvent * event )


Название: Re: Программно нажать кнопку
Отправлено: Alp от Сентябрь 10, 2010, 17:40
Грасиас!


Название: Re: Программно нажать кнопку
Отправлено: Denjs от Сентябрь 10, 2010, 17:45
есть ещё проще.
Код:
void QTest::mouseClick ( QWidget * widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1 )


Название: Re: Программно нажать кнопку
Отправлено: Sahab от Сентябрь 10, 2010, 21:47
уверен что это проще?...
ради этого совать в проект QTest?


Название: Re: Программно нажать кнопку
Отправлено: Denjs от Сентябрь 11, 2010, 18:21
уверен что это проще?...
ради этого совать в проект QTest?
гм... да. проще. Потому что мне не надо возиться с ручной готовкой объекта класса QEvent ))))

да и кто знает зачем программно понадобиось ТАК нажать на кнопку )) Может автору как-раз функциональность QTest и пригодится, если автор не использует какой-нибудь QPushButton::click()



Название: Re: Программно нажать кнопку
Отправлено: majatu от Май 02, 2011, 16:19
Код:
#include <windows.h>
QApplication::desktop()->cursor().setPos(globalX,globalY);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 1, 1, 0, 0);