一起看代码来玩玩QT之12 MainWindow(menubar menu ……)
来源:互联网 发布:echarts 省市区 json 编辑:程序博客网 时间:2024/05/29 15:26
MyMainWindow.h
<pre name="code" class="cpp">#ifndef MYMAINWINDOW_H#define MYMAINWINDOW_H#include <QMainWindow>#include <QLabel>#include "MyView.h"#include <QSystemTrayIcon>class MyMainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MyMainWindow(QWidget *parent = 0); QLabel* _label; MyView* _view; QSystemTrayIcon* _icon; void paintEvent(QPaintEvent *); void mousePressEvent(QMouseEvent *); QMenu* _menu; bool event(QEvent *event); bool eventFilter(QObject *, QEvent *);signals:public slots: void slotOpen(); void slotActivated(QSystemTrayIcon::ActivationReason);};#endif // MYMAINWINDOW_H
MyMainWindow.cpp
#include "MyMainWindow.h"#include <QApplication>#include <QMenu>#include <QMenuBar>#include <QAction>#include <QDebug>#include <QFileDialog>#include <QToolBar>#include <QStatusBar>#include <QLabel>#include <QPixmap>#include <QPainter>#include <QMouseEvent>#include <QCursor> //鼠标窗口位置#include <QIcon> //软件图标MyMainWindow::MyMainWindow(QWidget *parent) : QMainWindow(parent){ /* 加菜单 */ QMenuBar* pMenuBar = menuBar(); //menuBar() 是QMainWindow 独有; QMenu* menu = pMenuBar->addMenu("&File"); _menu = menu; QAction* openAction = menu->addAction("&Open", this, SLOT(slotOpen()), QKeySequence::Open); //QkeySequence 快捷键 if u write ctr + o, all system is ctr+o QAction* saveAction = menu->addAction("&Save", this, SLOT(slotOpen()), QKeySequence::Save); menu->addSeparator(); //分隔线 QAction* closeAction = menu->addAction("&Exit", this, SLOT(close()), QKeySequence::Close); closeAction->setToolTip("close window"); /* toolbar */ QToolBar* toolBar = this->addToolBar("MyToolBar"); toolBar->addAction(openAction); toolBar->addAction(saveAction); toolBar->addAction(closeAction); /* status bar */ QStatusBar* pStatusBar = this->statusBar(); pStatusBar->addWidget(_label = new QLabel("OK")); _label->setText("<font color=red>Processing....</font>"); /* 别的控件占用了之后,剩下的区域都是CentralWidget */ _view = new MyView; this->setCentralWidget(_view); // centralwidget 会随着非centralwidget的移动而移动 // system tray icon _icon = new QSystemTrayIcon; _icon->setIcon(QIcon("../bing.ico")); _icon->setToolTip("This is tray icon test"); _icon->show(); _icon->setContextMenu(_menu); connect(_icon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(slotActivated(QSystemTrayIcon::ActivationReason))); //软件隐藏到任务栏 或 显示到桌面 tray:托盘 this->installEventFilter(this);}void MyMainWindow::slotActivated(QSystemTrayIcon::ActivationReason reason){ if(reason == QSystemTrayIcon::Trigger) { if(this->isHidden()) this->show(); else this->hide(); }}/////////////////bool MyMainWindow::eventFilter(QObject *o, QEvent *e){ if(o == (QObject*)this && e->type() == QEvent::Close) { return true; } return QMainWindow::eventFilter(o, e);}bool MyMainWindow::event(QEvent *ev){ qDebug() << ev; if(ev->type() == QEvent::Close) { return false; } return QMainWindow::event(ev);}/////////////void MyMainWindow::mousePressEvent(QMouseEvent *ev){ if(ev->button() == Qt::RightButton) _menu->exec(QCursor::pos());}void MyMainWindow::paintEvent(QPaintEvent *){ QPainter p(this); p.drawPixmap(QPoint(0, 0), QPixmap("../aaa.png"));}void MyMainWindow::slotOpen(){ QString strFile = QFileDialog::getOpenFileName(); qDebug() << "Open file is:" << strFile;}int main(int argc, char* argv[]){ QApplication app(argc, argv); MyMainWindow w; w.show(); return 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);}
1 0
- 一起看代码来玩玩QT之12 MainWindow(menubar menu ……)
- 一起看代码来玩玩QT之01Hello world
- 一起看代码来玩玩QT之02LineEdit
- 一起看代码来玩玩QT之03coordinate
- 一起看代码来玩玩QT之04 Layout
- 一起看代码来玩玩QT之05 Controls
- 一起看代码来玩玩QT之06Event
- 一起看代码来玩玩QT之07 Painter
- 一起看代码来玩玩QT之10 Graphics
- 一起看代码来玩玩QT之11 Dialog
- 一起看代码来玩玩QT之17 json
- 一起看代码来玩玩QT之19 Process(进程)
- 一起看代码来玩玩QT之21 HttpClient
- 一起看代码来玩玩QT之23 audioRecord
- 一起看代码来玩玩QT之24 AudioPlayer
- 一起看代码来玩玩QT之06EventFilter (事件过滤)
- 一起看代码来玩玩QT之08 Draw(first projiect 画板)
- 一起看代码来玩玩QT之09 Signal and SLOT ( 信号和槽)
- hdu1542 矩阵面积并+线段树+离散化+二分+扫描线
- java基础笔记
- 详解高速神器python脚步打包android apk,超级快!!(打包系列教程之六)
- node.js实现图片验证码
- leetCode OJ 第二题
- 一起看代码来玩玩QT之12 MainWindow(menubar menu ……)
- 解决eclipse控制台中文乱码
- Linux内核设计与实现-第三章 进程管理
- 实用的css3属性
- appfog下用客户端管理你的mongodb、mysql(类似)
- 对模型添加光照后,其他对象也呈现灰色
- ydnaC.135
- mesos下载、准备安装环境、编译以及测试
- 九度题目1126:打印极值点下标