Linux下QT实现自定义对话框以及设置模态和非模态对话框

本文介绍了Linux环境下使用Qt创建模态和非模态对话框的区别和实现方式。模态对话框通过QDialog::exec()和QDialog::open()创建,非模态对话框用QDialog::show()实现。还讨论了内存管理和对话框的WindowAttribute设置,以解决内存泄露和资源占用问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近使用QT做毕业设计,其中用到了对话框,但系统默认的对话框不能满足我的需求,于是决定自己来封装一个,这需要根据QT提供的QDialog基类来建立,以下附上头文件及实现文件,已测试通过。

#ifndef MYRMDIALOG_H
#define MYRMDIALOG_H

#include <QDialog>
#include <QCheckBox>
#include <QDateTimeEdit>
#include <QDateEdit>
#include <QTimeEdit>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>

class MyRmDialog : public QDialog
{
    Q_OBJECT
public:
    MyRmDialog(QWidget *parent = 0);
private:
    QDateTimeEdit *dateTimeEdit;
    QDateEdit *dateEdit;
    QTimeEdit *timeEdit;
    QCheckBox *everyDay;
    QPushButton *dateBtn;
    QPushButton *timeBtn;
    QPushButton *okBtn;
    QPushButton *cancelBtn;
    QHBoxLayout *editLayout;
    QHBoxLayout *spinLayout;
    QHBoxLayout *btnLayout;
    QVBoxLayout *mainLayout;
private slots:	
   void dateClicked();
   void timeClicked();  
   void okClicked();
   void cancelClicked();
   void timeoutslot();

};

#endif // MYRMDIALOG_H
.cpp

#include "MyRmDialog.h"
#include <QTextCodec>
#include <QTimer>
MyRmDialog::MyRmDialog(QWidget *parent) :

    QDialog(parent)
{

    QTextCodec::setCodecForTr(QTextCodec::codecForName("gbk"));
    setWindowTitle(tr("编辑提醒"));
    dateTimeEdit=new QDateTimeEdit;
    dateTimeEdit->setDate(QDate::currentDate());
    dateTimeEdit->setTime(QTime::currentTime());
    
    dateEdit=new QDateEdit(QDate::currentDate());
    timeEdit=new QTimeEdit(QTime::currentTime());
    dateEdit->setReadOnly(true);
    timeEdit->setReadOnly(true);
    dateBtn = new QPushButton(tr("设置日期"));
    connect(dateBtn,SIGNAL(clicked()),this,SLOT(dateClicked()));

    timeBtn = new QPushButton(tr("设置时间"));
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值