Вопрос

Я моделирую ключи к приложению через функцию QT Keypress. Все клавиши работают нормально. Однако, когда я прохожу QT::Key_Enter который должен нажать кнопку OK в настоящее время активного окна, или QT::Key_Cancel Для кнопки отмены это ничего не делает.

Я думаю, может быть, потому что эти кнопки не имеют внимания, и у самого родительского окна есть. Как получить детей окна? Или, скорее, найдите на ней кнопку «ОК» или «Отмена», чтобы вы могли установить ее как ActiveWindow, а затем успешно перенести клавиши?

У меня есть:

QWidget *pWin = QApplication::activeWindow;
QObjectList *pList = pWin->children();
//how do you iterate through the list and find the OK or Cancel button?
Это было полезно?

Решение

Вы можете использовать findChild Функция с именем объекта, чтобы получить конкретных детей. Вы тоже можете использовать findChildren Чтобы получить всех детей, у которых одно и то же имя и итерация через список, используя foreach или QListIterator.

Чтобы получить кнопку, которую вы можете попробовать:

QPushButton* button = pWin->findChild<QPushButton*>("Button name");

Другие советы

Вы можете поместить пользовательский Фильтр событий На вашем виджете, чтобы захватить ключевое событие и посмотреть, что на самом деле происходит с ним.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top