提问人:ko4518330 提问时间:8/19/2023 最后编辑:ko4518330 更新时间:8/21/2023 访问量:65
Qt下拉菜单,按钮下方有文本
Qt dropdown menu with text under the button
问:
我正在使用 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);
答: 暂无答案
评论