Как вы получаете детей виджета в Qt?
я имитирую нажатия клавиш для приложения через функцию нажатия клавиш Qt. Все нажатия клавиш работают нормально. Однако, когда я прохожу QT::Key_Enter
который должен нажать кнопку OK текущего активного окна или QT::Key_Cancel
для кнопки "Отмена", он ничего не делает.
Я думаю, может быть, потому что эти кнопки не имеют фокуса, и само родительское окно имеет его. Как получить детей из окна? или, скорее, найти кнопку OK или отмена на нем, чтобы вы могли установить его как activeWindow, а затем успешно передать нажатия клавиш?
Я:
QWidget *pWin = QApplication::activeWindow;
QObjectList *pList = pWin->children();
//how do you iterate through the list and find the OK or Cancel button?
2 ответов
можно использовать findChild
функция с именем объекта, чтобы получить определенных детей.
Вы можете использовать findChildren
чтобы получить все дети, которые имеют одно и то же имя и итерации по списку с помощью foreach
или QListIterator
.
получить кнопку Вы можете попробовать:
QPushButton* button = pWin->findChild<QPushButton*>("Button name");
вы можете поставить пользовательский фильтр событий на вашем виджете, чтобы захватить ключевое событие и посмотреть, что на самом деле происходит с ним.