[Qt]创建主窗口

来源:互联网 发布:微信一键转发软件 编辑:程序博客网 时间:2024/04/30 18:42


在Windows下,我们经常会用到一些应用程序,比如IE、VS等,这些应用程序的主窗口界面都具有菜单、工具栏、上下文菜单、状态栏等部件,Qt为实现主窗口,提供了一些现有的类和接口,这里打算大致介绍一下:


关于QMainWindow

是QWidget的子类,具有QWidget的很多功能,比如setWindowIcon等,也另外单独提供了一些接口,比如设置中央窗口部件的setCentralWidget

我们实现主窗口时,都会继承自QMainWindow,比如:
class TestWindow:public QMainWindow{Q_OBJECTpublic:TestWindow(QWidget *parent = NULL);private:QMenu *m_pFileMenu;QToolBar *m_pFileToolBar;QAction *m_pOpenAction;QTextEdit *m_pTextEdit;private slots:void open();};

设置中央窗口部件

比如我这里设置QTextEdit为中央窗口部件
m_pTextEdit = new QTextEdit("xxx");setCentralWidget(m_pTextEdit);  //设置中央窗口部件

动作

动作可以加入到菜单、工具栏和上下文菜单中,比如我们经常使用的粘贴、复制等
我这里简单定义一个打开动作,然后将其加入到这些上述的这些菜单中去:
m_pOpenAction = new QAction("&Open",this);m_pOpenAction->setIcon(QIcon(":/image/open"));m_pOpenAction->setStatusTip("open action");m_pOpenAction->setShortcut(QKeySequence::Open);


这里只是简单定义了一个动作,并没有实际行为,这里将此动作连接到自动以的open槽:

connect(m_pOpenAction,SIGNAL(triggered()),this,SLOT(open()));

void TestWindow::open(){QFileDialog::getOpenFileName(this,"open file",".","All file(*.*)");}


菜单

新建一个菜单,并将前面定义的打开动作添加进来:
m_pFileMenu = menuBar()->addMenu("&File");m_pFileMenu->addAction(m_pOpenAction);

工具栏

使用addToolBar接口可以添加一个工具项,这里加打开动作添加进来
m_pFileToolBar = addToolBar("&File");m_pFileToolBar->addAction(m_pOpenAction);

上下文菜单
前面设置了QTextEdit为主窗口的中央窗口部件,其实QTextEdit自带有上下文菜单,这里为了演示,不使用自带的,而是用自定义的打开动作:
//为了演示,这里不使用QTextEdit默认的上下文菜单m_pTextEdit->addAction(m_pOpenAction);m_pTextEdit->setContextMenuPolicy(Qt::ActionsContextMenu);

状态栏

状态栏比较简单,第一次调用statusBar()时,会创建状态栏
statusBar()->showMessage("status bar",3000);

也可以在状态栏上添加自定义的窗口部件,比如QLabel等,这个比较简单,直接看接口就行,就不再做介绍了


运行一下






原创粉丝点击