代码之家  ›  专栏  ›  技术社区  ›  gregseth

如何设置自动=在qtoolbar中的qaction上重复?

  •  1
  • gregseth  · 技术社区  · 15 年前

    我想使用qtoolbutton类的autorepeat功能。

    问题是,当使用qtoolbar::addaction()时,这些实例是自动创建的,我找不到访问它们的方法:qtoolbar::widgetforaction()在这种情况下似乎不起作用(始终返回空值)。

    有什么想法吗? 谢谢

    2 回复  |  直到 15 年前
        1
  •  0
  •   gregseth    15 年前

    似乎没有简单的方法。我发现最好的方法是使用qObject::findchldren:

    foreach(QToolButton* pButton, pToolBar->findChildren<QToolButton*>()) {
    
        if (pButton->defaultAction() == pTheActionIWant) {
            ...
        }
    }
    
        2
  •  0
  •   fvila    15 年前

    事实上,在我的情况下不会返回空值,也许你在做一些不同的事情。我的代码如下:

    QToolButton* button = dynamic_cast<QToolButton*>(
        ui.toolBar->widgetForAction(ui.action));
    

    对我来说,它按预期工作……也许你不是演员?这个方法返回一个qwidget*和我的编译器问题,如果我不强制转换,则返回错误。

    仅供参考,我使用的是Visual Studio 2005和Qt4.6。