如何给QMenuBar按钮添加动作?

0 投票
2 回答
2599 浏览
提问于 2025-04-18 10:06

我正在用PyQt/Qt4/QtDesigner开发一个图形用户界面(GUI)。这个界面里有一个菜单栏,上面有一些按钮。比如说,点击File这个按钮会展开显示Exit这个选项。我现在有点困惑,不知道怎么给这些按钮添加功能。这个过程和给QPushButton按钮添加功能是一样的吗?

2 个回答

-1

这和 QPushButtons 基本上是一样的。按钮被点击时,菜单的操作就会被触发。不过,你可以直接连接到相应的槽函数。

下面是一个简单的退出功能的例子:

class MainWindow(QtGui.QMainWindow):

    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        # menu bar
        self.menu_bar = QtGui.QMenuBar(self)

        # file menu
        self.menu_file = QtGui.QMenu(self.menu_bar)
        self.menu_file.setTitle('File')
        self.menu_bar.addAction(self.menu_file.menuAction())

        # exit action
        self.menu_action_exit = QtGui.QAction(self)
        self.menu_action_exit.setText("Exit")
        self.menu_action_exit.triggered.connect(self.close)
0

你不需要添加任何东西。菜单项在被点击时会发出一个 triggered() 信号。Qt 自动为这个信号准备了一个槽函数——在 C++ 中,在 MainGui.h 文件里你会看到

class MainGui
{
   ...
   private slots:
      void on_actionExit_triggered(); //For command Exit
      void on_actionSave_Data_triggered(); //For command Save Data
};

然后你只需要根据自己的需要写回调函数就可以了。我想在 Python 中结构也差不多。

补充:这是 .cpp 文件的内容:

void MainGui::on_actionExit_triggered()
{
   //Do whatever you like here
}

撰写回答