qt5右键一个新建的pushbutton,弹出菜单栏,选择菜单栏中的第一个选项,获取到对应按钮的属性
时间: 2023-10-23 15:09:38 浏览: 79
按钮的pushlike属性
5星 · 资源好评率100%
首先,你需要在 QPushButton 上注册右键菜单事件。可以通过重写 `contextMenuEvent` 方法实现。
在菜单栏中选择第一个选项时,你需要获取到该 QAction 的属性并将其设置到对应的 QPushButton 上。
下面是一个简单的示例代码:
```cpp
#include <QtWidgets>
class MyPushButton : public QPushButton {
public:
MyPushButton(QWidget *parent = nullptr) : QPushButton(parent) {}
protected:
void contextMenuEvent(QContextMenuEvent *event) override {
QMenu menu(this);
QAction *action = menu.addAction("Set Property");
connect(action, &QAction::triggered, this, &MyPushButton::setPropertyFromAction);
menu.exec(event->globalPos());
}
private slots:
void setPropertyFromAction() {
QAction *action = qobject_cast<QAction *>(sender());
if (action) {
QString propertyValue = action->text();
setText(propertyValue);
}
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget window;
QVBoxLayout *layout = new QVBoxLayout(&window);
MyPushButton *button = new MyPushButton(&window);
button->setText("Right-click Me");
layout->addWidget(button);
window.show();
return app.exec();
}
```
这里我们自定义了一个名为 `MyPushButton` 的 QPushButton 子类,并在其 `contextMenuEvent` 方法中添加了一个 QMenu,其中包含一个 QAction。当右键点击按钮时,会弹出该菜单。
在 `setPropertyFromAction` 方法中,我们从 QAction 中获取其文本属性,并将其设置为 QPushButton 的文本属性。你可以根据实际需求来获取和设置不同的属性。
阅读全文