3.关于QT中的MainWindow窗口,MenuBar,ToolBar,QuickTip等方面的知识点
1 新建一个空Qt项目
编写12MainWindow.pro |
HEADERS += \ MyMainWindow.h \ MyView.h SOURCES += \ MyMainWindow.cpp \ MyView.cpp QT += gui widgets |
MyView.h |
#ifndef MYVIEW_H #define MYVIEW_H #include <QWidget> class MyView:public QWidget{ Q_OBJECT public: 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); } |
MyMainWindow.h |
#ifndef MYMAINWINDOW_H #define MYMAINWINDOW_H #include <QMainWindow> #include <QLabel> #include "MyView.h" #include <QSystemTrayIcon> //通过这个头文件可以让程序在状态栏显示icon class MyMainWindow:public QMainWindow { Q_OBJECT public: 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(); QMenu* menu = pMenuBar->addMenu("&File"); _menu = menu; QAction* openAction = menu->addAction("&Open", this, SLOT(slotOpen()), QKeySequence::Open); 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); //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))); this->installEventFilter(this); } void MyMainWindow::slotActivated(QSystemTrayIcon::ActivationReason reason) { if(reason == QSystemTrayIcon::Trigger) { if(this->isHidden()) this->show(); else this->hide(); } } /** * @brief MyMainWindow::eventFilter * @param o * @param e * @return 消息过滤器 */ 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(); } |
运行结果: 右键的时候出现菜单 |
3.关于QT中的MainWindow窗口,MenuBar,ToolBar,QuickTip等方面的知识点相关推荐
- QT中如何固定窗口的大小?
QT中如何固定窗口的大小? 一种方法是设置它的最大大小和最小大小,并且使它们的值相等,都等于当前你设置的窗口尺寸.简单的示例: setMinimumSize(370, 150);setMaximumS ...
- windows卸载qt_如何在Qt中显示一个窗口并在关闭后立即将其删除?
作为一个非常简单的例子,我想在按下按钮时在Qt中显示一个对话框.通常的模式(在我正在申请的应用程序中)似乎如下: class MainWindow { ... private slots: butto ...
- Qt中如何使窗口隐藏/最小化到托盘
Qt中如何实现自己的托盘功能,Qt自带的demo也很明了,这里我们就来实现自己的一个托盘... 功能:窗口最小化后或者点击"hide"按钮将窗口隐藏到托盘. 通常最小化的窗口会在任 ...
- 在qt中获取halcon窗口图片_Qt联合HALCON显示文件夹图片及初步处理
1.先上图 2.头文件 1 #ifndef MAINWINDOW_H2 #define MAINWINDOW_H 3 4 #include 5 #include 6 #include 7 #inclu ...
- qt中opengl窗口的创建
该笔记借鉴自 : "懂deeee珍惜"的 现代OpenGL+Qt学习笔记之二:程序框架 "爱种鱼的猫"的 QT中使用OpenGL(0)--创建一个窗口 引用引自 ...
- Qt中的QMainWindow
文章目录 1 Qt中的QMainWindow简介 1.1 应用程序中的主窗口 1.2 QMainWindow 2 QMainWindow中的菜单栏 3 QMainWindow中的工具栏 4 QMain ...
- Qt中的QDialog
文章目录 1 Qt中的QDialog 1.1 QDialog简介 1.2 模态对话框和非模态对话框 1.3 对话框的返回值 2 登陆对话框实例分析 2.1 分析 2.2 代码实现 2.3 登录对话框的 ...
- Qt的MDI中多个子窗口响应一个菜单事件的优雅实现(动态slot)
问题: 用过MFC的人都知道,MDI中,某个菜单或者按钮,在视图中可以添加响应函数,在文档中也可以添加响应函数,在框架中也可以添加它的响应函数,优先级分别是视图.文档.框架,而且MFC自动将消息发给当 ...
- 【Qt】MainWindow窗口状态栏
00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 显示菜单动作状态 04. 显示临时信息 05. 显示正常信息 06. 显示永久信息 07. 附录 01. 概述 在程序主窗 ...
最新文章
- python二手房课程设计_【Python】赶集网二手房爬虫 (可扩展)
- linux 查看lv格式,linux lv pv lv 命令
- NOIP模拟题——dun
- JS的正则表达式[收藏]
- 多级缓存中的一级缓存全网流量分发CDN
- LeetCode每日一题 52. N皇后 II
- k8s extender_Windows Home Server的Drive Extender的9种选择
- css中的媒体查询_CSS中的媒体查询
- Java中的秒表-StopWatch
- css3兼容性问题归纳
- JVM内存管理 (转)
- 详细解读二叉树基本操作
- Redis面经:重新梳理了 5 种数据类型的用法和应用场景
- 《Using OpenRefine》翻译~2
- Task08|文本数据|joyfulpandas
- c#窗体开发俄罗斯方块小游戏
- BLE学习(4):蓝牙地址类型和设备的隐私
- Password verification failed
- 京淘商城后台管理系统
- 【数据可视化应用】绘制森林图(附Python和R语言代码)
热门文章
- 电气实现:蒙特卡洛法 模拟多台电动汽车有序充放电负荷和(python实现)
- Spring IoC(一)IoC容器的设计与实现:BeanFactory与ApplicationContext
- OpenCASCADE绘制测试线束:布尔运算命令之检查命令
- wxWidgets:演示笔记本notebook使用
- boost::gregorian模块实现以天为单位显示到新年的时间量的测试程序
- 宏BOOST_TEST_TRAIT_TRUE的用法
- ITK:两个图像的像素分割
- ITK:创建高斯导数内核
- DCMTK:测试DcmSCPPool类,包括DcmSCP和DcmSCU交互
- VTK:Texture之TexturePlane