Qt下拉菜单,按钮下方有文本

Qt dropdown menu with text under the button

提问人:ko4518330 提问时间:8/19/2023 最后编辑:ko4518330 更新时间:8/21/2023 访问量:65

问:

我正在使用 C++ Qt4.8 开发下拉菜单。 这是我用来测试Qt-Ribbon-Widget的存储库。 当前菜单左侧包含图标行,右侧包含文本。

图标右侧的文字

我想使图标的大小与菜单按钮相同,并在图标下方添加文本。这是我的画。

图标下方的文字

这是向按钮添加菜单的代码

  // Create 'Open file' button
  QToolButton *openFileButton = new QToolButton(this);
  openFileButton->setText(tr("File"));
  openFileButton->setToolTip(tr("Open file or directory"));
  openFileButton->setIcon(QIcon(":/icons/add_folder_2.svg"));

  // Create dropdown menu
  openFileButton->setPopupMode(QToolButton::MenuButtonPopup);
  QMenu *menu = new RibbonIconMenu("Title");
  menu->addAction(QIcon(":/icons/file_2.svg"), "Recent file 1");
  menu->addAction(QIcon(":/icons/file_2.svg"), "Recent file 2");
  menu->addAction(QIcon(":/icons/file_2.svg"), "Recent file 3");

  // Add this menu to the 'Open file' button
  openFileButton->setMenu(menu);

  ui->ribbonTabWidget->addButton("Project", openFileButton);

图标和文本在addAction()

这是自定义菜单的代码,它派生自 QMenu。

#include <QMenu>
#include <QObject>

class RibbonIconMenu : public QMenu
{
    Q_OBJECT
public:
    RibbonIconMenu(const QString sName, QWidget *parent = nullptr);
};

RibbonIconMenu::RibbonIconMenu(const QString sName, QWidget *parent)
    : QMenu(sName, parent)
{

    // Set stylesheet
    QString styleSheetText = QString(
          // maybe?
        );

    setStyleSheet(styleSheetText);
}

根据Qt文档 - 样式表语法,“Qt样式表的术语和语法规则几乎与HTML CSS相同。我不熟悉 HTML/CSS,但我发现一些 HTML/CSS 解决方案正在使用 HTML 方式。我想知道是否有CSS属性类型或一些Qt的解决方法?

更新: 我使用并解决它。请参阅如何将按钮放入 QMenu 或 QAction 控件内?QWidgetAction

for(int i = 0; i < 3; i++)
{
    QToolButton *openDatabaseButton = new QToolButton;
    openDatabaseButton->setText(tr("Database"));
    openDatabaseButton->setToolTip(tr("Connect to database"));
    openDatabaseButton->setIcon(QIcon(":/icons/add_database_2.svg"));
    openDatabaseButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
    openDatabaseButton->setMinimumSize(48, 48);
    openDatabaseButton->setAutoRaise(true);
    openDatabaseButton->setIconSize(QSize(32,32));
    openDatabaseButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    QWidgetAction *toolButtonAction = new QWidgetAction(menu);
    toolButtonAction->setDefaultWidget(openDatabaseButton);
    menu->addAction(toolButtonAction);
}
openFileButton->setMenu(menu);
C++ 量子 tqt4.8

评论

0赞 mzimmers 8/19/2023
自定义工具按钮:doc.qt.io/qt-6/qtoolbutton.html#toolButtonStyle-prop

答: 暂无答案