gpt4 book ai didi

qt - 如何删除下拉菜单的下拉箭头,同时保留QSS的border-image?

转载 作者:行者123 更新时间:2023-12-04 10:57:13 26 4
gpt4 key购买 nike

我将 QPushButton 更改为下拉菜单。我的代码如下:

m_menu = new QMenu(this);
m_addAction = new QAction(m_menu);
m_delAction = new QAction(m_menu);
m_addAction->setText(QObject::tr("add"));
m_delAction->setText(QObject::tr("del"));
m_menu->addAction(m_addAction);
m_menu->addAction(m_delAction);
m_menu->setStyleSheet("\
QMenu {\
background-image: url(:/img/tanchu-1.png);; /*background-image*/\
border: 3px solid rgb(235,110,36);/*menu border*/\
}\
QMenu::item {\
font-size: 10pt; \
color: rgb(225,225,225);\
border: 3px solid rgb(60,60,60);\
background-image: url(:/img/tanchu-1.png);\
padding:160px 160px;\
margin:2px 2px;\
}\
QMenu::item:selected { \
background-color:rgb(235,110,36);\
}\
QMenu::item:pressed {\
border: 1px solid rgb(60,60,61); \
background-color: rgb(220,80,6); \
}\
");
ui->pushButton->setMenu(m_menu);

我得到的按钮看起来像这样 image1 .右下角有一个黑色的下拉箭头。

但现在的问题是,当我使用

从下拉菜单中删除下拉箭头时
ui->pushButton->setStyleSheet("QPushButton::menu-indicator{image:none;}");

我用 QSS border-image: url(:/img/btn_mid_0.png);设置给 QPushButton 的 border-image 像 image2 image 2 一样消失了.下拉箭头和边框图像一起消失。如何在保持之前设置的边框图像的同时删除下拉箭头?此外,子菜单的宽度不会随着 image3 image3 的 qpushbutton 而改变。 .如何将下拉菜单的宽度设置为与 QPushButton 一样宽?谢谢!

我所有的代码如下:主窗口.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPushButton>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();

private slots:

private:
Ui::MainWindow *ui;
QMenu *m_menu;
QAction *m_addAction;
QAction *m_delAction;
QPushButton *m_pushButton;

void addFunc();
void delFunc();
};

#endif // MAINWINDOW_H

主窗口.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QMenu>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

m_menu = new QMenu(this);
m_addAction = new QAction(m_menu);
m_delAction = new QAction(m_menu);
m_addAction->setText(QObject::tr("add"));
m_delAction->setText(QObject::tr("del"));
m_menu->addAction(m_addAction);
m_menu->addAction(m_delAction);
connect(m_addAction, &QAction::triggered, this, &MainWindow::addFunc);
connect(m_delAction, &QAction::triggered, this, &MainWindow::delFunc);

m_menu->setStyleSheet("\
QMenu {\
background-image: url(:/img/tanchu-1.png);; /*background-image*/\
border: 3px solid rgb(235,110,36);/*menu border*/\
}\
QMenu::item {\
font-size: 10pt; \
color: rgb(225,225,225);\
border: 3px solid rgb(60,60,60);\
background-image: url(:/img/tanchu-1.png);\
padding:160px 160px;\
margin:2px 2px;\
}\
QMenu::item:selected { \
background-color:rgb(235,110,36);\
}\
QMenu::item:pressed {\
border: 1px solid rgb(60,60,61); \
background-color: rgb(220,80,6); \
}\
");
ui->pushButton->setMenu(m_menu);

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

}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::addFunc()
{
qDebug() << "addFunc";
}

void MainWindow::delFunc()
{
qDebug() << "delFunc";
}

最佳答案

只需在一个地方设置所有按钮 CSS,可以在 QtCreator/Designer 属性中,在 C++ 代码中,不能同时设置。基本上,您的 C++ CSS 会覆盖您在设计器 View 中设置的内容。

在 Designer View 中,只需为 styleSheet 属性使用类似这样的内容:

QPushButton { border-image: url(:/img/btn_mid_0.png); }
QPushButton::menu-indicator { image: none; }

或者在 C++ 中同样的东西,但是有引号 :)

至于菜单样式...我不确定现在发生了什么(看起来很奇怪!)但是让它们的大小匹配的最简单方法是在 CSS 中显式设置两者的大小(width: XXXpx;) 或 C++ (QWidget::setFixedWidth(XXX))。如果按钮由布局管理,C++ 版本可能会更好,因为 CSS 大小属性会变得模糊。对于 CSS,有时 min-width 和/或 max-widthwidth 效果更好。

关于qt - 如何删除下拉菜单的下拉箭头,同时保留QSS的border-image?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59100590/

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