顶层窗口-MainWindow
新建项目,选择基类的时Base Class是QMainWindow
最上面是Window Title,用于显示标题和控制按钮,比如最大化、最小化和关闭等;下面一些是Menu Bar,用于显示菜单;再下面一点事Toolbar areas,用于显示工具条,注意,Qt的主窗口支持多个工具条显示,因此这里是ares,你可以把几个工具条并排显示在这里,就像Word2003一样;工具条下面是Dock window areas,这是停靠窗口的显示区域,所谓停靠窗口就是像Photoshop的工具箱一样,可以在主窗口的四周显示;再向下是Status Bar,就是状态栏;中间最大的Central widget就是主要的工作区了。
QAction *openAction;
openAction=new QAction(tr("Open"),this); openAction->setShortcut(QKeySequence::Open); openAction->setStatusTip(tr("Open a file.")); QMenu* file=menuBar()->addMenu(tr("&File")); file->addAction(openAction); QToolBar *toolBar=addToolBar(tr("&File")); toolBar->addAction(openAction);
上述程序新建了一个菜单和一个工具栏,并为菜单和工具栏各自添加了一个按钮。
菜单QMenu*,通过menuBar()->addMenu(tr("&File"));获得
工具栏QToolBar *通过addToolBar(tr("&File"));获得
并为菜单和工具栏各自添加了一个按钮。 都是 file->addAction toolBar->addAction也就是添加响应。
运行结果如下图。
添加图标:
openAction->setIcon(QIcon("H:\for home\learningQT\11\Open.png"));
一句话搞定,而且可以直接将图片PNG转换为图标,方便快捷。
信号槽响应:
private slots: void open(); QObject::connect(openAction,SIGNAL(triggered()),this,SLOT(open())); void MainWindow::open() { QMessageBox::information(NULL,tr("Open"),tr("open file")); }
运行结果:
状态栏:
msgLabel=new QLabel(); msgLabel->setMinimumSize(msgLabel->sizeHint()); msgLabel->setAlignment(Qt::AlignHCenter); statusBar()->addWidget(msgLabel); statusBar()->setStyleSheet(QString("QStatusBar::item{border: 0px}"));
状态栏是statusBar(),可以加入label进行显示,并设置好label的大小和位置即可。
openAction->setStatusTip(tr("Open a file."));这句话是点在动作上,状态栏会显示响应的状态!结果如下: