gpt4 book ai didi

c++ - QMenu* << QAction* -- 帮我写一个全局 QMenu 插入操作符

转载 作者:行者123 更新时间:2023-11-30 01:32:19 27 4
gpt4 key购买 nike

如果没有其他原因,只是为了我自己的消遣,我想写一个全局插入运算符,这样我就可以使用花哨的代码了:

aQMenu << aQAction1 << aQAction2 << aQAction2 << seperator << aQAction3;

也许您讨厌语法,但我至少想尝试一下使用它。问题是,这是我第一次尝试编写插入运算符代码,我被难住了。将枚举“分隔符”插入 QMenu* 的代码很简单,而且我可以正常工作,但我认为这段代码适用于将 QAction* 插入 QMenu*:

// does not compile:  "must have an argument of class or enumerated type"
QMenu *operator<< (QMenu *menu, QAction *action)
{
menu->addAction(action);
return menu;
}

编译器提示说这个函数需要一个类或枚举类型的参数,这让我很困惑,因为第二个参数是类类型。正确地写下来的方法。我看了很多网络示例,认为是时候回答这里的问题了。

我知道有些程序员会提示我偏离了标准的 Qt 语法,但我也乐于用其他类重载运算符 <<。看起来插入运算符在这里工作得很好。我能说什么 -- 这让我很开心。

最佳答案

编译器会报错,因为所有的参数都是指针。使用运算符(operator)菜单参数的引用,它看起来像这样:

QMenu& operator<< (QMenu &menu, QAction *action) {
menu.addAction(action);
return menu;
}

现在这个运算符应该可以处理菜单对象了。如果您想将它与指向菜单的指针一起使用,您需要在应用新的 << 时取消对该指针的引用。运算符(operator):

QMenu *menu = new QMenu();
QAction *action1, *action2;
...
*menu << action1 << action2;

关于c++ - QMenu* << QAction* -- 帮我写一个全局 QMenu 插入操作符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1956764/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com