[Qt5] 創(chuàng)建菜單欄、工具欄、核心控件和浮動窗口

    一.對話框內(nèi)容概要 菜單欄—菜單項—模態(tài)窗口/非模態(tài)窗口 工具欄 狀態(tài)欄 核心控件 浮動窗口 二 .操作步驟: 1.新建項目,在ui界面添加textEdit控件(顯示內(nèi)容) 2.包含頭文件 #include "QPu


    一.對話框內(nèi)容概要

    • 菜單欄—>菜單項—>模態(tài)窗口/非模態(tài)窗口
    • 工具欄
    • 狀態(tài)欄
    • 核心控件
    • 浮動窗口

    二 .操作步驟:
    1.新建項目,在ui界面添加textEdit控件(顯示內(nèi)容)
    2.包含頭文件

    #include "QPushButton"
    #include "QStatusBar"
    #include "QLabel"
    #include "QTextEdit"
    #include "QToolBar"
    #include "QDockWidget"
    #include "QDialog"
    #include "iostream"
    #include "QDebug"

    3 .實現(xiàn)代碼
    1).添加菜單欄(QMenuBar)
    法一:

    QMenuBar *mBar=menuBar();//
    	//添加菜單
    	//給菜單欄加一個菜單"文件",賦給指針pFile,這一步?jīng)]有用,下面有用
    	QMenu *Menu = mBar->addMenu(QString::fromLocal8Bit("文件"));

    法二:

    //因為menuBar()是QMenuBar的一個成員函數(shù),返回的是一個對象,所以它可以像對象一樣調(diào)用函數(shù),可直接
    	menuBar()->addMenu(QString::fromLocal8Bit("文件"));

    關(guān)于:fromLocal8Bi()函數(shù)
    ? ? *QT默認(rèn)的編碼是unicode,不能正確顯示中文的
    ? ? *windows默認(rèn)使用(GBK/GB2312/GB18030)
    ? ? *.使用fromLocal8Bit()函數(shù),實現(xiàn)了從本地字符集GB到Unicode的轉(zhuǎn)換,用于處理漢語顯示亂碼等問題

    2).添加菜單項(QAction)(按下文件,會出現(xiàn)新建、保存那些菜單項),即添加動作addAction

    ? ? . 添加“新建”菜單項

    //給菜單"文件"添加一個動作"新建"
        QAction *act = Menu->addAction( QString::fromLocal8Bit("新建"));

    ? ? . 單擊新建,彈出模態(tài)對話框 -QDialog

    connect(act ,&QAction::triggered,
    		[=]()
    	    {
    		 QDialog dlg;
    		 dlg.exec();  //.exec()是對話框?qū)傩宰優(yōu)槟B(tài),含義是執(zhí)行到這里就不會動(主函數(shù)里面也是一樣)
    	    }
    	);

    ? ? . 添加“”打開“”菜單項

    //給菜單"文件"添加一個動作"打開"
        QAction *open = Menu->addAction(QString::fromLocal8Bit("打開"));

    ? ? . 單擊打開,彈出非模態(tài)對話框 -QDialog

    connect(open ,&QAction::triggered,//triggered和clicked類似,但應(yīng)用范圍更廣
    		[=]()
    	    {
    		 /*****法一******/ 
    		 dlg1;  //注意這里需要將dlg定義為全局變量,這樣運行完show(),dlg就不會釋放了,否則運行完,釋放dlg,非模態(tài)對話框?qū)⒁婚W而過
    		 dlg1.show();  //.show()是對話框?qū)傩詾槟B(tài)     
    
    		 /*****法二******/  //缺點:在程序結(jié)束時,指針才會釋放,若多次使用該對話框,導(dǎo)致內(nèi)存越用越小,
    		 /*QDialog *p = new QDialog(this);  
    		 p->show();*/
    
    		 /*****法三******/ 		  
    		 /*QDialog *p = new QDialog(this);  
    		 p->setAttribute(Qt::WA_DeleteOnClose);//窗口關(guān)閉自動釋放內(nèi)存
    		 p->show();*/		 
    	   }
    	);

    注:法一添加QDialog類型全局變量dlg1:

    [Qt5] 創(chuàng)建菜單欄、工具欄、核心控件和浮動窗口_開發(fā)語言


    3).添加工具欄(QToolBar)(菜單項的快捷方式)

    QToolBar *toolBar = addToolBar("");
    	toolBar->addAction(act);//act為上面QAction 類型指針

    注:給工具欄添加小控件的方法

    QPushButton p = new QPushButton(this); // 在主窗口加一個按鈕類型指針
     p->setText(QString::fromLocal8Bit(“(__)”));
     toolBar->addWidget§;
     //點擊按鈕,改變名稱
     connect(p,&QPushButton::clicked,
    = {
     p->setText(QString::fromLocal8Bit(“1111”));
     }
     );


    4).添加狀態(tài)欄(QStatusBar)

    /***法一***/
        QStatusBar *Bar = statusBar();
    	QLabel *label = new QLabel(this);
    	label->setText(QString::fromLocal8Bit("Narmal text file"));
    	Bar->addWidget(label);
    	/***法二***/
    	Bar->addWidget(new QLabel("2",this));
    
    	//若想在右邊添加狀態(tài)欄
    	Bar->addPermanentWidget(new QLabel("3",this));

    5).添加浮動窗口(QDockWidget)

    QDockWidget *DockWidge = new QDockWidget(this);
    	//第一個參數(shù),浮動窗口的位置
        //第二個參數(shù),QDockWidget類型的指針
    	addDockWidget(Qt::RightDockWidgetArea,DockWidge);
    	                                                
    	//給浮動窗口加個編輯器TextEdit
    	QTextEdit *TextEdit = new QTextEdit(this);
    	DockWidge->setWindowTitle(QString::fromLocal8Bit("我是浮動窗口"));
    	DockWidge->setWidget(TextEdit);

    整體代碼

    在構(gòu)造函數(shù)部分添加:

    [Qt5] 創(chuàng)建菜單欄、工具欄、核心控件和浮動窗口_菜單項_02

    //添加菜單欄
    	/*****法一*****/
    	QMenuBar *mBar=menuBar();//
    	//添加菜單
    	//給菜單欄加一個菜單"文件",賦給指針pFile,這一步?jīng)]有用,下面有用
    	QMenu *Menu = mBar->addMenu(QString::fromLocal8Bit("文件"));
    
    	/*****法二*****/
    	//因為menuBar()是QMenuBar的一個成員函數(shù),返回的是一個對象,所以它可以像對象一樣調(diào)用函數(shù),可直接
    	//menuBar()->addMenu(name);
    
    	//添加菜單項(按下文件,會出現(xiàn)新建、保存那些菜單項),添加動作
    	QAction *act = Menu->addAction( QString::fromLocal8Bit("新建"));//給菜單"文件"添加一個動作"新建"
    
    	//單擊新建,彈出模態(tài)對話框 -QDialog
    	//QAction *p1 = Menu->addAction(QString::fromLocal8Bit("模態(tài)對話框"));
    	connect(act ,&QAction::triggered,
    		[=]()
    	    {
    		 QDialog dlg;
    		 dlg.exec();  //.exec()是對話框?qū)傩宰優(yōu)槟B(tài),含義是執(zhí)行到這里就不會動(主函數(shù)里面也是一樣)
    	    }
    	);
    
    	Menu->addSeparator();//添加分割線,僅僅為了美觀
    
    	QAction *open = Menu->addAction(QString::fromLocal8Bit("打開"));//給菜單"文件"添加一個動作"打開"
    	//單擊打開,彈出非模態(tài)對話框
    	//QAction *p2 = Menu->addAction(QString::fromLocal8Bit("非模態(tài)對話框"));
    	connect(open ,&QAction::triggered,//triggered和clicked類似,但應(yīng)用范圍更廣
    		[=]()
    	    {
    		 /*****法一******/ 
    		 dlg1;  //注意這里需要將dlg定義為全局變量,這樣運行完show(),dlg就不會釋放了,否則運行完,釋放dlg,非模態(tài)對話框?qū)⒁婚W而過
    		 dlg1.show();  //.show()是對話框?qū)傩詾槟B(tài)     
    		
    
    		 /*****法二******/  //缺點:在程序結(jié)束時,指針才會釋放,若多次使用該對話框,導(dǎo)致內(nèi)存越用越小,
    		 /*QDialog *p = new QDialog(this);  
    		 p->show();*/
    
    		 /*****法三******/ 		  
    		 /*QDialog *p = new QDialog(this);  
    		 p->setAttribute(Qt::WA_DeleteOnClose);//窗口關(guān)閉自動釋放內(nèi)存
    		 p->show();*/		 
    	   }
    	);
    
    	//添加工具欄,菜單項的快捷方式
    	QToolBar *toolBar = addToolBar("");
    	toolBar->addAction(act);
    	//給工具欄添加小控件
    	QPushButton *p = new QPushButton(this);  //在主窗口加一個按鈕類型指針
    	p->setText(QString::fromLocal8Bit("(*^__^*)"));
    	toolBar->addWidget(p);
    	//點擊按鈕,改變名稱
    	connect(p,&QPushButton::clicked,
    		[=]()
    	  {
    	     p->setText(QString::fromLocal8Bit("1111"));
    	  }
    	);
    
    	//狀態(tài)欄
    	QStatusBar *Bar = statusBar();
    	QLabel *label = new QLabel(this);
    	label->setText(QString::fromLocal8Bit("Narmal text file"));
    	Bar->addWidget(label);
    	//法二:
    	Bar->addWidget(new QLabel("2",this));
    
    	//若想在右邊添加狀態(tài)欄
    	Bar->addPermanentWidget(new QLabel("3",this));
    
    	//核心控件(中間內(nèi)容)
    	//浮動窗口-QDockWidget
    	QDockWidget *DockWidge = new QDockWidget(this);
    	addDockWidget(Qt::RightDockWidgetArea,DockWidge);//第一個參數(shù),浮動窗口的位置
    	                                                 //第二個參數(shù),QDockWidget類型的指針
    	//給浮動窗口加個編輯器
    	QTextEdit *TextEdit = new QTextEdit(this);
    	DockWidge->setWindowTitle(QString::fromLocal8Bit("我是浮動窗口"));
    	DockWidge->setWidget(TextEdit);

    4.運行結(jié)果:

    [Qt5] 創(chuàng)建菜單欄、工具欄、核心控件和浮動窗口_#include_03

    補(bǔ)充:標(biāo)準(zhǔn)對話框(關(guān)于對話框和問題對話框)和文件對話框

    一丶標(biāo)準(zhǔn)對話框
    1.關(guān)于對話框(模態(tài)的)–QMessagebox
    代碼:
    ? ? ? ? ? #include “QMessagebox”

    QAction *p2 = Menu->addAction(QString::fromLocal8Bit("關(guān)于對話框"));
    	connect(p2 ,&QAction::triggered,
    		[=]()
    	    {
    		 QMessageBox::about(this,QString::fromLocal8Bit("關(guān)于"),
    		                             QString::fromLocal8Bit("關(guān)于QT"));	
    	    }
    	
    	);

    [Qt5] 創(chuàng)建菜單欄、工具欄、核心控件和浮動窗口_菜單項_04


    2.問題對話框(常用)–QMessagebox,一般退出時詢問是否保存的時候使用

    代碼:

    QAction *p3 = Menu->addAction(QString::fromLocal8Bit("問題對話框"));
    	connect(p3 ,&QAction::triggered,
    		[=]()
    	    {
    		// QMessageBox::question(this,QString::fromLocal8Bit("我是名稱"),QString::fromLocal8Bit("are you OK"));
    
    		 /****默認(rèn)的是YES/NO,若想改變按鈕名稱,則***/
    		 QMessageBox::question(this,QString::fromLocal8Bit("我是名稱"),QString::fromLocal8Bit("are you OK"),
    		                       QMessageBox::Ok,
    			                   QMessageBox::Cancel);
    		/* switch(ret)
    		 {
    		 case QMessageBox::Ok:
    		 qDebug()<<"";
    			 break;
             case QMessageBox::Cancel:
    			  break;
    		 default:
             break; 
    		 }*/
    	    }
    	);

    [Qt5] 創(chuàng)建菜單欄、工具欄、核心控件和浮動窗口_菜單項_05

    二、文件對話框
    代碼:

    ? ? ? ? ? #include “QFileDialog”

    QAction *p4 = Menu->addAction(QString::fromLocal8Bit("文件對話框"));
    	connect(p4 ,&QAction::triggered,
    		[=]()
    	    {
    		 QFileDialog::getOpenFileName(this,//指定父對象
    			 "對話框標(biāo)題",
    			 "../" , //上一級路徑
    			 "souce(*.cpp *.h);;Text(*.text);;all(*.*)" //*代碼所有的
    			 );
    	    }
    	
    	);

    [Qt5] 創(chuàng)建菜單欄、工具欄、核心控件和浮動窗口_qt_06


    ?


    戳戳小手幫忙點個免費的贊和關(guān)注吧,嘿嘿。


    聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
    發(fā)表評論
    更多 網(wǎng)友評論0 條評論)
    暫無評論

    返回頂部

    主站蜘蛛池模板: 亚洲AV综合色一区二区三区| 国产综合精品一区二区| 日韩高清一区二区| 亚洲无线码一区二区三区| 国产精品亚洲一区二区三区在线观看| 中文字幕在线观看一区二区| 国产免费私拍一区二区三区| 精品午夜福利无人区乱码一区| 国产AV一区二区三区传媒| 国产福利电影一区二区三区久久久久成人精品综合 | 国产综合无码一区二区色蜜蜜| 亚洲一区二区三区亚瑟| 无码人妻一区二区三区在线视频 | 国产一区二区草草影院| 人妻体内射精一区二区三四| 国产成人精品无码一区二区| 亚洲日韩精品一区二区三区| 日韩一区二区三区在线| 国产经典一区二区三区蜜芽 | 亚洲va乱码一区二区三区| 亚洲国产精品无码久久一区二区| 国产精品一区二区av不卡| 小泽玛丽无码视频一区| 精品免费久久久久国产一区| 视频一区精品自拍| 久久中文字幕一区二区| 日韩精品乱码AV一区二区| 亚洲一区二区三区高清| 亚洲一区二区三区精品视频| 国产自产V一区二区三区C| 久久一区二区免费播放| 国产在线第一区二区三区| 成人免费av一区二区三区| 激情亚洲一区国产精品| 亚洲性日韩精品国产一区二区| 国产一区二区三区在线观看精品| 亚洲av日韩综合一区在线观看 | 综合无码一区二区三区四区五区| 亚洲日韩一区二区三区| 中文字幕在线观看一区| 国产一区二区三区免费在线观看 |