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

注意: 要想實現(xiàn)關(guān)閉MainWindow按鈕時Form窗體隨之關(guān)閉,Form窗體的close()在MainWindow的析構(gòu)函數(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(); // 此處為了實現(xiàn)關(guān)閉MainWindow的同時也關(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實現(xiàn)按鈕開關(guān)Form窗體的效果的示例代碼的文章就介紹到這了,更多相關(guān)QT按鈕開關(guān)Form窗體內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C基礎(chǔ) 尋找隨機(jī)函數(shù)的G點(diǎn)詳解
下面小編就為大家?guī)硪黄狢基礎(chǔ) 尋找隨機(jī)函數(shù)的G點(diǎn)詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06
C語言循環(huán)結(jié)構(gòu)與時間函數(shù)用法實例教程
這篇文章主要介紹了C語言循環(huán)結(jié)構(gòu)與時間函數(shù)用法,是C語言中非常重要的一個技巧,需要的朋友可以參考下2014-08-08
C++實現(xiàn)WebSocket服務(wù)器的案例分享
WebSocket是一種在單個TCP連接上進(jìn)行全雙工通信的通信協(xié)議,與HTTP協(xié)議不同,它允許服務(wù)器主動向客戶端發(fā)送數(shù)據(jù),而不需要客戶端明確地請求,本文主要給大家介紹了C++實現(xiàn)WebSocket服務(wù)器的案例,需要的朋友可以參考下2024-05-05

