QT QPushbutton制作下拉列表

//创建button

QPushbutton * button = new QPushbutton;

//连接button点击信号,在点击的时候弹出menu

connect(button,SIGNAL(clicked(bool)),this,SLOT(onButtonClicked(bool)));

//onButtonClicked函数实现。(menu的追加也可以在函数外,在函数外需要追加为全局变量)

void onButtonClicked(bool tt) {
    //新建menu
    QMenu *menu = new QMenu(this);

    //新建action
    QAction* act1 = new QAction("选择全局类型",this);
    QAction* act2 = new QAction("选择工程类型",this);
    QAction* act3 = new QAction("新建工程类型",this);
    QAction* act4 = new QAction("移除类型",this);

    //把action追加到menu
    menu->addAction(act1);
    menu->addAction(act1);
    menu->addAction(act1);
    menu->addAction(act1);

    //把menu加载到button
    button->setMenu(menu);

    //设置button文字
    button->setText("下拉列表");

    //打开menu
    menu->exec(QPoint(QCursor::pos().x(),QCursor::pos().y()));
    
}

效果:

进阶:

1、如果点击列表的某项需要做事情,可以追加响应的信号连接来响应事件

connect(act1,SIGNAL(triggered()),this,SLOT(onAct1Clicked()));

void onAct1Clicked() {
    //在这里做自己想要的事情。
}

2、如果不喜欢那个按钮右侧的下拉图标,可以设置取消显示:

button->setStyleSheet("QPushButton::menu-indicator{image:none}");

效果如图:

3、如果不想显示文字,只显示下拉图标(或者其他图标),可以设置如下:

内置图标参考:(20条消息) Qt的内置图标库_爱上876的博客-CSDN博客_qt图标库

//设置QT内置图标-(下拉图标)
button->setIcon(QApplication::style()->standardICon(QStyle::SP_TitleBarUnshadeButton);
//一般这样设置图标比较小,如果要放大可以如下设置
QIcon icon = QApplication::style()->standardICon(QStyle::SP_TitleBarUnshadeButton);
QPixmap map = icon.pixmap(QSize(20,20));
button->setIcon(QIcon(map.scaled(QSize(100,100))));

//使用其他图片可以如下设置
button->setIcon(QIcon(QPixmap("./按钮/sound.png").scaled(QSize(100,100))));

使用QT自大内置图标效果图:

4、如果列表左边要放icon,就直接设置就可以,不要icon觉得左边太宽,可以如下设置

在上面的函数中追加如下
void onButtonClicked(bool tt) {
    //新建menu
    QMenu *menu = new QMenu(this);
    
    //追加
    QString menu_style = “QMenu::item{padding-left:2px};”;
    menu->setStyleSheet(menu_style);
    
    ...
}

  效果如下:(是不是顺眼多了)

 

                                      喜欢就点个赞吧!

转载请注明出处 (20条消息) QT QPushbutton制作下拉列表_luo_bin2010的博客-CSDN博客https://blog.csdn.net/luo_bin2010/article/details/124167421

  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值