Qt中MainWindow类实例
来源:互联网 发布:python多线程selenium 编辑:程序博客网 时间:2024/05/22 08:20
QMainWindow有菜单栏,工具栏,状态栏;
可以将QWidget作为QMainWindow的中间部位的一个部件;
mainwindow.h
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QLabel>#include "myview.h"//在mainwindow上再添加一个窗口#include <QSystemTrayIcon>//托盘class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); void paintEvent(QPaintEvent *); void mousePressEvent(QMouseEvent *); bool event(QEvent *); QLabel * _label; MyView * _view;//把要显示的东西都放在这个窗口部件里面;mainWindow起到封装的作用 QMenu * _menu;//用于右键弹出菜单 QSystemTrayIcon * _icon;//托盘图标 void slotActivated(QSystemTrayIcon::ActivationReason);signals: public slots: void slotOpen(); void slotSave();};#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"#include <QApplication>#include <QMenu>//菜单类#include <QMenuBar>//菜单栏#include <QAction>//菜单项,是一个可以触发的东西#include <QFileDialog>#include <QDebug>#include <QToolBar>#include <QStatusBar>#include <QPainter>#include <QPixmap>#include <QMouseEvent>#include <QCursor>//鼠标当前的位置#include <QIcon>#include <QEvent>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){ /*添加菜单*/ QMenuBar * pMenuBar = menuBar(); QMenu *menu = pMenuBar->addMenu("File"); _menu = menu; QAction *openAction = menu->addAction("&Open", this, SLOT(slotOpen()), QKeySequence::Open); QAction *saveAction = menu->addAction("&Save", this, SLOT(slotSave()), QKeySequence::Save); menu->addSeparator(); QAction *closeAction = menu->addAction("&Exit", this, SLOT(close()), QKeySequence::Close); /*添加工具栏*/ QToolBar *toolBar = this->addToolBar("MyToolBar");//添加一个工具栏 toolBar->addAction(openAction); toolBar->addAction(saveAction); toolBar->addAction(closeAction); /*添加状态栏*/ QStatusBar *pstatusBar = this->statusBar(); pstatusBar->addWidget(_label = new QLabel("OK")); _label->setText("<font color = red>Processing...</font>"); /*mainwindow中别的控件占用了之后,剩下的区域都是CentralWidget的*/ _view = new MyView; this->setCentralWidget(_view); /*托盘*/ _icon = new QSystemTrayIcon; _icon->setIcon(QIcon("../1.png")); _icon->setToolTip("This is my tray test"); _icon->show();//显示该托盘图标 _icon->setContextMenu(menu); connect(_icon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(slotActivated(QSystemTrayIcon::ActivationReason)));}//这个函数的功能也没有实现void MainWindow::slotActivated(QSystemTrayIcon::ActivationReason reason){ if (reason == QSystemTrayIcon::Trigger){ if (this->isHidden()) this->show(); else this->isHidden(); }}//这个函数的功能没有实现bool MainWindow::event(QEvent *event){ if(event->type() == QEvent::Close){ return false; } return QMainWindow::event(event);}void MainWindow::paintEvent(QPaintEvent *){ QPainter p(this); p.drawPixmap(QPointF(0, 0),QPixmap("../1.png"));}void MainWindow::mousePressEvent(QMouseEvent *ev){ if(ev->button() == Qt::RightButton) _menu->exec(QCursor::pos());}void MainWindow::slotSave(){ QFileDialog::getSaveFileName();}void MainWindow::slotOpen(){ QString strFile = QFileDialog::getOpenFileName(); qDebug() << strFile;}int main(int argc, char **argv){ QApplication app(argc, argv); MainWindow w; w.setGeometry(300, 130, 700, 500); w.show(); app.exec();}
myview.h
#ifndef MYVIEW_H#define MYVIEW_H#include <QWidget>class MyView : public QWidget{ Q_OBJECTpublic: explicit MyView(QWidget *parent = 0); void paintEvent(QPaintEvent *);signals: public slots: };#endif // MYVIEW_H
myview.cpp
#include "myview.h"#include <QPainter>MyView::MyView(QWidget *parent) : QWidget(parent){}void MyView::paintEvent(QPaintEvent *){ QPainter p(this); p.fillRect(rect(), Qt::red);}
0 0
- Qt中MainWindow类实例
- Qt中UI::MainWindow与MainWindow
- QT实例之十二(mainwindow)
- qt中MainWindow出现错误
- QT 创建主窗口 MainWindow 实例
- Qt中mouseMoveEvent在MainWindow中使用
- Qt中mouseMoveEvent在MainWindow中使用
- Qt中mouseMoveEvent在MainWindow中使用
- Qt中mouseMoveEvent在MainWindow中使用
- Qt中mouseMoveEvent在MainWindow中使用
- Qt中mouseMoveEvent在MainWindow中使用
- Qt中给MainWindow设置布局管理
- QT中MainWindow的布局设置
- QT中MainWindow菜单中点击出现对话框
- QT中在MainWindow中代码添加控件
- QT中QWidget、QDialog以及MainWindow的区别
- Qt学习心得--mainwindow
- Qt之MainWindow学习
- PowerDesigner15在生成SQL时报错Generation aborted due to errors detected during the verification of the mod
- 兼容IE、新版Chrome、Firefox,实现本地图片等比例缩放预览
- cocos2d-x学习之自动内存管理和常见宏
- STL运用的C++技术(2)——模板特化
- VC CComboBox用法
- Qt中MainWindow类实例
- openmq-2
- 往~/.bashrc 文件添加JAVA_HOME导致 该文件错误,sudo等指令无法使用
- angularjs 学习 指令学习一
- Java 7 Fork/Join 并行计算框架概览
- 一种java拷贝属性的方法
- Git系列一——Git简介
- 关于java.lang.NoSuchMethodError的分析,产生的原因及处理方式
- 数学工具的物理涵义