代码
//main.cpp #include "calculator_111.h" #include <QtWidgets/QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Calculator_111 w; w.show(); return a.exec(); /* //QT creator Calculator_111 win; win.show(); return a.exec(); */ }
//calculator_111.h #ifndef CALCULATOR_111_H #define CALCULATOR_111_H #include <QtWidgets/QMainWindow> #include "ui_calculator_111.h"IDB_BITMAP1 class Calculator_111 : public QMainWindow { Q_OBJECT public: Calculator_111(QWidget *parent = 0); ~Calculator_111(); private: Ui::Calculator_111Class ui; /*QTdesiner画的界面*/ void open(); /**/ QAction *openAction; /**/ }; #endif // CALCULATOR_111_H
//calculator_111.cpp #include <QAction> #include <QMenuBar> #include <QMessageBox> #include <QStatusBar> #include <QToolBar> /**/ #include "calculator_111.h" /*C++ 的继承的语法的一部分,说明 MainWindow 的构造函数之前需要调用父类 QMainWindow 的带有参数的构造函数。一般而言,子类应该调用父类的同参数构造函数,以便正确构造父类 */ Calculator_111::Calculator_111(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); /* 来自QTdesigner */ setWindowTitle(tr("Calculate Window")); //在MainWindow类中添加一个私有变量openAction openAction = new QAction(QIcon("logo111.png"), tr("&Open..."), this);//路径问题!!! //在堆上创建了openAction对象。在QAction构造函数,我们传入了一个图标、一个文本和 this 指针 openAction->setShortcuts(QKeySequence::Open); openAction->setStatusTip(tr("Open an existing file")); /*setStatusTip()则实现了当用户鼠标滑过这个 action 时,会在主窗口下方的状态栏显示相应的提示。 connect()函数,将这个QAction的triggered()信号与Calculator_111类的open()函数连接起来。 当用户点击了QAction时,会自动触发MainWindow的open()函数*/ connect(openAction, &QAction::triggered, this, &Calculator_111::open); QMenu *file = menuBar()->addMenu(tr("&File")); file->addAction(openAction); QToolBar *toolBar = addToolBar(tr("&File")); toolBar->addAction(openAction); statusBar() ; } Calculator_111::~Calculator_111() { } //在MainWindow类中添加了一个私有函数open() void Calculator_111::open() { QMessageBox::information(this,tr("Information"),tr("open")); }