3.关于QT中的MainWindow窗口,MenuBar,ToolBar,QuickTip等方面的知识点
2014-12-13 23:58
281 查看
1
新建一个空Qt项目
1
新建一个空Qt项目
编写12MainWindow.pro |
HEADERS += \ MyMainWindow.h \ MyView.h SOURCES += \ MyMainWindow.cpp \ MyView.cpp QT += guiwidgets |
MyView.h |
#ifndefMYVIEW_H #defineMYVIEW_H #include<QWidget> classMyView:publicQWidget{ Q_OBJECT public: explicitMyView(QWidget*parent=0); voidpaintEvent(QPaintEvent*); signals: publicslots: }; #endif//MYVIEW_H |
MyView.cpp |
#include"MyView.h" #include<QPainter> MyView::MyView(QWidget*parent): QWidget(parent) { } voidMyView::paintEvent(QPaintEvent*) { QPainterp(this); p.fillRect(rect(),Qt::red); } |
MyMainWindow.h |
#ifndefMYMAINWINDOW_H #defineMYMAINWINDOW_H #include<QMainWindow> #include<QLabel> #include"MyView.h" #include<QSystemTrayIcon>//通过这个头文件可以让程序在状态栏显示icon classMyMainWindow:publicQMainWindow { Q_OBJECT public: explicitMyMainWindow(QWidget*parent=0); QLabel*_label; MyView*_view; QSystemTrayIcon*_icon; voidpaintEvent(QPaintEvent*); voidmousePressEvent(QMouseEvent*); QMenu*_menu; boolevent(QEvent*event); booleventFilter(QObject*,QEvent*); signals: publicslots: voidslotOpen(); voidslotActivated(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("closewindow"); /*toolbar添加工具栏*/ QToolBar*toolBar=this->addToolBar("MyToolBar"); toolBar->addAction(openAction); toolBar->addAction(saveAction); toolBar->addAction(closeAction); /*statusbar*/ QStatusBar*pStatusBar=this->statusBar(); pStatusBar->addWidget(_label=newQLabel("OK")); _label->setText("<fontcolor=red>Processing...</font>"); /*别的控件占用了之后,剩下的区域都是CentralWidget*/ _view=newMyView; this->setCentralWidget(_view); //systemtrayicon _icon=newQSystemTrayIcon; _icon->setIcon(QIcon("../bing.ico")); _icon->setToolTip("Thisistrayicontest"); _icon->show(); _icon->setContextMenu(_menu); connect(_icon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this,SLOT(slotActivated(QSystemTrayIcon::ActivationReason))); this->installEventFilter(this); } voidMyMainWindow::slotActivated(QSystemTrayIcon::ActivationReasonreason) { if(reason==QSystemTrayIcon::Trigger) { if(this->isHidden())this->show(); elsethis->hide(); } } /** *@briefMyMainWindow::eventFilter *@paramo *@parame *@return消息过滤器 */ boolMyMainWindow::eventFilter(QObject*o,QEvent*e) { if(o==(QObject*)this&&e->type()==QEvent::Close) { returntrue; } returnQMainWindow::eventFilter(o,e); } boolMyMainWindow::event(QEvent*ev) { qDebug()<<ev; if(ev->type()==QEvent::Close) { returnfalse; } returnQMainWindow::event(ev); } voidMyMainWindow::mousePressEvent(QMouseEvent*ev) { if(ev->button()==Qt::RightButton) _menu->exec(QCursor::pos()); } voidMyMainWindow::paintEvent(QPaintEvent*) { QPainterp(this); p.drawPixmap(QPoint(0,0),QPixmap(".../aaa.png")); } voidMyMainWindow::slotOpen() { QStringstrFile=QFileDialog::getOpenFileName(); qDebug()<<"Openfileis:"<<strFile; } intmain(intargc,char*argv[]) { QApplicationapp(argc,argv); MyMainWindoww; w.show(); returnapp.exec(); } |
运行结果: 右键的时候出现菜单 |
相关文章推荐
- 3.关于QT中的MainWindow窗口,MenuBar,ToolBar,QuickTip等方面的知识点
- 整理关于JVM方面的知识点
- 整理关于JVM方面的知识点
- 关于QT窗口
- 关于QT中对窗口中某个widget建类
- QT中关于获得窗口尺寸的问题
- Qt开发中的实用笔记三--关于各种类的零碎知识点:
- 2.关于QT中的Dialog(模态窗口),文件选择器,颜色选择器,字体选择器,消息提示窗口
- 1.关于QT中的Graphics绘图,定时器,动画,将窗口中的内容打印到图片上,打印机,打印预览
- 关于文字编码方面的知识点的一些整理
- QT 创建主窗口 MainWindow 实例
- 【转】补充说明:关于Beaglebone black上debian无图形界面的问题及QT的窗口示例
- 补充说明:关于Beaglebone black上debian无图形界面的问题及QT的窗口示例
- 2.关于QT中的Dialog(模态窗口),文件选择器,颜色选择器,字体选择器,消息提示窗口
- Qt+vs2010创建多窗口时,关于每次创建2个窗口的问题的解决方法
- Qt4 Menubar and Toolbar
- 补充说明:关于Beaglebone black上debian无图形界面的问题及QT的窗口示例
- 关于Qt窗口保持宽高比的研究
- 控制QT中MainWindow上Menu和ToolBar的上下文菜单Action列表
- Qt关于设置子窗口样式表不生效问题