开发者

How do you get a widget's children in Qt?

I'm simulating keyPresses to an application through Qt's KeyPress function. All the KeyPresses work fine. However when I pass a QT::Key_Enter which is supposed to press the OK button of the currently active window, or QT::Key_Cancel for the cancel button, it does nothing.

I'm thinking maybe, because these buttons don't have the focus, and th开发者_C百科e parent window itself has it. How do you get the children of a window? or rather find the OK or Cancel button on it so you could set it as the activeWindow and then pass KeyPresses successfully?

I have:

QWidget *pWin = QApplication::activeWindow;
QObjectList *pList = pWin->children();
//how do you iterate through the list and find the OK or Cancel button?


You can use the findChild() function with the object name to get a specific child.

You can also use findChildren() to get all the children that have the same name and then iterate through the list using foreach() or QListIterator.

To get a button you can try:

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


You might want to put a custom event filter on your widget to capture the key event and see what really happens to it.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜