qt 设置QToolButton的下拉菜单靠近右侧
时间: 2023-07-22 16:05:30 浏览: 328
下拉菜单设置
可以通过设置QToolButton的popupMode属性为QToolButton::MenuButtonPopup,然后使用QMenu中的addAction()方法添加菜单项,并设置QMenu的属性为Qt::RightAlignment来实现将下拉菜单靠近右侧。
示例代码如下:
```cpp
QToolButton *toolButton = new QToolButton(parent);
toolButton->setPopupMode(QToolButton::MenuButtonPopup);
QMenu *menu = new QMenu(toolButton);
menu->addAction("Item 1");
menu->addAction("Item 2");
menu->addAction("Item 3");
menu->setStyleSheet("QMenu::item { padding: 2px 20px 2px 20px; }");
menu->setStyleSheet("QMenu { menu-scrollable: 1; }");
menu->setStyleSheet("QMenu { menu-item-spacing: 2px; }");
menu->setAttribute(Qt::WA_TranslucentBackground);
menu->setWindowFlags(Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint);
menu->setStyleSheet("QMenu { background-color: qlineargradient(x1 : 0, y1 : 0, x2 : 0, y2 : 1, stop : 0 #f8f8f8, stop : 0.5 #ffffff, stop : 0.6 #e0e0e0, stop : 1 #d6d6d6); } QMenu::item:selected { background-color: #acacac; }");
menu->setStyleSheet("QMenu::separator { height: 1px; background-color: #d6d6d6; }");
menu->setStyleSheet("QMenu::indicator { width: 12px; height: 12px; }");
menu->setStyleSheet("QMenu::indicator:unchecked { image: url(:/res/unchecked.png); }");
menu->setStyleSheet("QMenu::indicator:checked { image: url(:/res/checked.png); }");
menu->setStyleSheet("QMenu::right-arrow { margin-right: 5px; width: 12px; height: 12px; }");
menu->setStyleSheet("QMenu::item:selected { background-color: #acacac; }");
menu->setStyleSheet("QMenu::item { padding: 2px 20px 2px 20px; }");
menu->setStyleSheet("QMenu { menu-scrollable: 1; }");
menu->setStyleSheet("QMenu { menu-item-spacing: 2px; }");
menu->setStyleSheet("QMenu::separator { height: 1px; background-color: #d6d6d6; }");
menu->setStyleSheet("QMenu::indicator { width: 12px; height: 12px; }");
menu->setStyleSheet("QMenu::indicator:unchecked { image: url(:/res/unchecked.png); }");
menu->setStyleSheet("QMenu::indicator:checked { image: url(:/res/checked.png); }");
menu->setStyleSheet("QMenu::right-arrow { margin-right: 5px; width: 12px; height: 12px; }");
menu->setWindowFlags(Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint);
menu->setWindowFlags(Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint);
menu->setAttribute(Qt::WA_TranslucentBackground);
menu->setStyleSheet("QMenu { background-color: qlineargradient(x1 : 0, y1 : 0, x2 : 0, y2 : 1, stop : 0 #f8f8f8, stop : 0.5 #ffffff, stop : 0.6 #e0e0e0, stop : 1 #d6d6d6); } QMenu::item:selected { background-color: #acacac; }");
menu->setStyleSheet("QMenu::separator { height: 1px; background-color: #d6d6d6; }");
menu->setStyleSheet("QMenu::indicator { width: 12px; height: 12px; }");
menu->setStyleSheet("QMenu::indicator:unchecked { image: url(:/res/unchecked.png); }");
menu->setStyleSheet("QMenu::indicator:checked { image: url(:/res/checked.png); }");
menu->setStyleSheet("QMenu::right-arrow { margin-right: 5px; width: 12px; height: 12px; }");
toolButton->setMenu(menu);
```
需要注意的是,以上代码中的菜单样式表只是为了美化菜单的样式,具体样式可以根据需要进行调整。另外,菜单的右对齐可能会因为窗口大小和屏幕分辨率的不同而产生差异,需要根据实际情况进行调整。
阅读全文