QT實(shí)現(xiàn)按鈕開關(guān)Form窗體的效果的示例代碼
實(shí)現(xiàn)效果敘述如下: MainWindow中的按鈕實(shí)現(xiàn)Form窗體的開關(guān),Form窗體的關(guān)閉按鈕禁用掉,只允許使用窗體按鈕進(jìn)行,且關(guān)閉MainWindow按鈕時(shí)Form窗體隨之關(guān)閉。

注意: 要想實(shí)現(xiàn)關(guān)閉MainWindow按鈕時(shí)Form窗體隨之關(guān)閉,Form窗體的close()在MainWindow的析構(gòu)函數(shù)中無法實(shí)現(xiàn),需要將其寫入MainWindow的關(guān)閉事件中。
廢話不多說,直接上代碼:
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}form.c
#include "form.h"
#include "ui_form.h"
Form::Form(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form)
{
ui->setupUi(this);
setWindowFlags(Qt::CustomizeWindowHint |
Qt::WindowMinimizeButtonHint |
Qt::WindowMaximizeButtonHint); // 禁用Form窗體的關(guān)閉按鈕
}
Form::~Form()
{
delete ui;
}mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void closeEvent(QCloseEvent *); // 重寫MainWindow的關(guān)閉事件
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_Hmainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "form.h"
#include <QDebug>
static bool newWinFlag = false;
Form *configWindow = NULL;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
configWindow = new Form;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::closeEvent(QCloseEvent *e)
{
configWindow->close(); // 此處為了實(shí)現(xiàn)關(guān)閉MainWindow的同時(shí)也關(guān)閉Form窗體
}
void MainWindow::on_pushButton_clicked()
{
qDebug() << newWinFlag;
newWinFlag = !newWinFlag;
if(newWinFlag == true)
{
configWindow->show();
return;
}
else
{
configWindow->close();
return;
}
}form.h
#ifndef FORM_H
#define FORM_H
#include <QWidget>
namespace Ui {
class Form;
}
class Form : public QWidget
{
Q_OBJECT
public:
explicit Form(QWidget *parent = 0);
~Form();
private:
Ui::Form *ui;
};
#endif // FORM_H到此這篇關(guān)于QT實(shí)現(xiàn)按鈕開關(guān)Form窗體的效果的示例代碼的文章就介紹到這了,更多相關(guān)QT按鈕開關(guān)Form窗體內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++ std::unique_lock 用法實(shí)例詳解
std::unique_lock 是 C++11 提供的一個(gè)用于管理互斥鎖的類,它提供了更靈活的鎖管理功能,適用于各種多線程場景,這篇文章給大家介紹了C++ std::unique_lock 用法,感興趣的朋友跟隨小編一起看看吧2023-09-09
C基礎(chǔ) 尋找隨機(jī)函數(shù)的G點(diǎn)詳解
下面小編就為大家?guī)硪黄狢基礎(chǔ) 尋找隨機(jī)函數(shù)的G點(diǎn)詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06
C語言循環(huán)結(jié)構(gòu)與時(shí)間函數(shù)用法實(shí)例教程
這篇文章主要介紹了C語言循環(huán)結(jié)構(gòu)與時(shí)間函數(shù)用法,是C語言中非常重要的一個(gè)技巧,需要的朋友可以參考下2014-08-08
C語言實(shí)現(xiàn)雙人貪吃蛇游戲?qū)嵗a
大家好,本篇文章主要講的是C語言實(shí)現(xiàn)雙人貪吃蛇游戲?qū)嵗a,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
C++實(shí)現(xiàn)WebSocket服務(wù)器的案例分享
WebSocket是一種在單個(gè)TCP連接上進(jìn)行全雙工通信的通信協(xié)議,與HTTP協(xié)議不同,它允許服務(wù)器主動(dòng)向客戶端發(fā)送數(shù)據(jù),而不需要客戶端明確地請求,本文主要給大家介紹了C++實(shí)現(xiàn)WebSocket服務(wù)器的案例,需要的朋友可以參考下2024-05-05
基于Matlab制作一個(gè)不良圖片檢測系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何基于Matlab制作一個(gè)不良圖片檢測系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的可以跟隨小編一起了解一下2022-07-07

