QT中菜单栏有个选择,点击会有下拉菜单。菜单里有2个选项,无论点击哪一个都会弹出同一个窗口。窗口里面有个按钮。我想让按钮判断是哪一选项触发的窗口
时间: 2024-02-18 08:05:52 浏览: 92
您可以通过在菜单选项中添加自定义数据来实现这个功能。具体的实现步骤如下:
1. 在设计界面中,打开菜单栏并添加两个菜单选项,并将它们分别命名为 `option1` 和 `option2`。
2. 为这两个菜单选项分别设置一个自定义数据,可以使用 `setData()` 方法,例如:
```cpp
ui->option1->setData(1); // 将 option1 的自定义数据设置为 1
ui->option2->setData(2); // 将 option2 的自定义数据设置为 2
```
3. 在槽函数中获取触发窗口的菜单选项的自定义数据,并将其传递给弹出的窗口。
```cpp
void MainWindow::handleMenuOption()
{
QAction *action = qobject_cast<QAction *>(sender());
int option = action->data().toInt(); // 获取菜单选项的自定义数据
MyDialog *dialog = new MyDialog(option, this); // 创建弹出的窗口并传递选项
dialog->show();
}
```
4. 在弹出的窗口中,根据传递的选项来设置按钮的文本或者执行不同的操作。
```cpp
MyDialog::MyDialog(int option, QWidget *parent) : QDialog(parent), ui(new Ui::MyDialog)
{
ui->setupUi(this);
if (option == 1) {
ui->button->setText("Option 1");
} else if (option == 2) {
ui->button->setText("Option 2");
}
connect(ui->button, &QPushButton::clicked, this, &MyDialog::handleButtonClick);
}
void MyDialog::handleButtonClick()
{
// 根据选项执行不同的操作
}
```
这样,当您点击菜单栏中的选项时,会弹出一个窗口,并根据选项不同来设置窗口中的按钮文本或执行不同的操作。
阅读全文