C3867:使用QMenu添加自定义QAction,使用MSCV2015调试,提示:非标准语法,请使用“&”来创建指向成员的指针

运行环境:QT 5.11.1 MinGW 32bit

运行状态:构建无错误,可正常运行;

源代码段如下:

m_menu = new QMenu(this);
m_menu->addAction(tr("加载"),this,slot_on_pushButton_autoLoad_clicked);

将运行环境切换为 QT 5.11.1 MSVC2015 32bit

运行提示:C3867:"CViewTest::slot_on_pushButton_autoLoad_clicked":非标准语法,请使用“&”来创建指向成员的指针。

 

解决方法:

将代码替换为:

m_menu = new QMenu(this);  
    m_addAction = new QAction(m_menu);   
    m_addAction->setText(QObject::tr("加载"));  
    m_menu->addAction(m_addAction);  
    connect(m_addAction, &QAction::triggered, this, &CViewTest::slot_on_pushButton_autoLoad_clicked);  

参考资料:

https://www.pianshen.com/article/41071537996/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,你可以在QMenu使用QScrollBar来显示多个QAction控件。QMenu并没有直接提供滚动条的功能,但是你可以使用QScrollArea来将QMenu包装起来,从而实现滚动条的效果。 下面是一个简单的例子,演示如何在QMenu使用QScrollBar来显示多个QAction控件: ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction, QScrollArea, QVBoxLayout, QWidget class MyWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): # 创建QMenu对象和QAction对象 menu = QMenu(self) for i in range(20): action = QAction('Action {}'.format(i), self) menu.addAction(action) # 创建QScrollArea对象,并将QMenu添加到QScrollArea中 scrollArea = QScrollArea(self) scrollArea.setWidgetResizable(True) widget = QWidget() layout = QVBoxLayout(widget) layout.addWidget(menu) scrollArea.setWidget(widget) # 将QScrollArea设置为主窗口的中心窗口 self.setCentralWidget(scrollArea) if __name__ == '__main__': app = QApplication([]) window = MyWindow() window.show() app.exec_() ``` 在上面的例子中,我们创建了一个MyWindow类,继承自QMainWindow,然后在initUI()函数中创建了一个QMenu对象和多个QAction对象,并将它们添加到QMenu中。接着,我们创建了一个QScrollArea对象,并将QMenu添加到QScrollArea中。最后,将QScrollArea设置为主窗口的中心窗口,从而实现了滚动条的效果。 需要注意的是,由于QMenu是一个弹出式菜单,它并不是一个独立的窗口,而是依附于某个QWidget或QMainWindow的。因此,在使用QScrollArea包装QMenu时,需要将QScrollArea作为主窗口的中心窗口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值