Qt学习例子4——Test2_1

该博客介绍了一个基于Qt Creator的工程,包括dialog、designerwidget、multichoicewindow和calculator四个类。dialog和designerwidget用于测试槽功能,前者用代码实现UI,后者借助UI设计器。multichoicewindow类专注于模态和非模态对话框的区别,而calculator类实现了一个简单的计算器功能。

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

此工程(在QtCreator下建的工程)包含了几个类,dialog类、designerwidget类、multichoicewindow类、calculator类。

其中dialog类和designerwidget类都是用于测试槽的使用,dialog类是代码显示的ui,而designerwidget是用ui设计的界面。

Multichoicewindow 类更为复杂,主要功能是区分模态对话框和非模态对话框

Calculator是一个简单的计算器

 

代码如下:

 

//Designerwidget.h

#ifndef DESIGNERWIDGET_H
#define DESIGNERWIDGET_H
#include <QWidget>
#include <QMessageBox>
namespace Ui {
    class DesignerWidget;
}
class DesignerWidget : public QWidget
{
    Q_OBJECT
public:
    explicit DesignerWidget(QWidget *parent = 0);
    ~DesignerWidget();
private slots:
    void on_pushButton_clicked();
    void on_lineEdit_returnPressed();
private:
    Ui::DesignerWidget *ui;
};
#endif // DESIGNERWIDGET_H

 

// Designerwidget.cpp

#include "designerwidget.h"
#include "ui_designerwidget.h"
DesignerWidget::DesignerWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::DesignerWidget)
{
    ui->setupUi(this);
}
DesignerWidget::~DesignerWidget()
{
    delete ui;
}
void DesignerWidget::on_pushButton_clicked()
{
    QMessageBox::information(this, "Message", "The text entered in the "
            "manual widget window is:/n" + ui->lineEdit->text());
}
void DesignerWidget::on_lineEdit_returnPressed()
{
    QMessageBox::information(this, "Message", "The text entered in the "
            "manual widget window is:/n" + ui->lineEdit->text());
}

 

 

// Designerwidget.ui

Qt学习例子4鈥斺擳est2_1

 

//Dialog.h

#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QtGui/QLineEdit>
class Dialog : public QDialog
{
    Q_OBJECT
public:
    explicit Dialog(QWidget *parent = 0);
private:
    QLineEdit *m_lineEdit;
    QPushButton *m_pbtn;
signals:
public slots:
private slots:
    void showMessage(void);
};
#endif // DIALOG_H

 

 

//Dialog.cpp

#include <QtGui>
#include "dialog.h"
Dialog::Dialog(QWidget *parent) :
    QDialog(parent)
  ,m_lineEdit(new QLineEdit)
{
    QHBoxLayout *topLayout = new QHBoxLayout();
    m_pbtn=new QPushButton("OK");
    topLayout->addWidget(new QLabel("EnterText:"));
//    topLayout->addWidget(new QLineEdit);
    topLayout->addWidget(m_lineEdit);
    topLayout->addWidget(m_pbtn);
    setLayout(topLayout);
    //this->findChild<QPushButton *>("pushbutton")
    //connect(m_pbtn,SIGNAL(clicked()),this,SLOT(showMessage()));
    connect(m_lineEdit,SIGNAL(returnPressed()),this,SLOT(showMessage()));
}
void Dialog::showMessage(void)
{
    QMessageBox::information(this, "Message", "The text entered in the "
            "manual widget window is:/n" + m_lineEdit->text());
}
 
//calculator.h
 
#ifndef CALCULATOR_H
#define CALCULATOR_H
#include <QWidget>
namespace Ui {
    class calculator;
}
class calculator : public QWidget
{
    Q_OBJECT
public:
    explicit calculator(QWidget *parent = 0);
    ~calculator();
private:
    Ui::calculator *ui;
};
#endif // CALCULATOR_H
 
 
//calculator.cpp
 
#include "calculator.h"
#include "ui_calculator.h"
calculator::calculator(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::calculator)
{
    ui->setupUi(this);
}
calculator::~calculator()
{
    delete ui;
}
 
//calculator.ui
Qt学习例子4鈥斺擳est2_1
//multichoicewindow.h
 
#ifndef MULTICHOICEWINDOW_H
#define MULTICHOICEWINDOW_H
#include <QWidget>
namespace Ui {
    class MultiChoiceWindow;
}
class MultiChoiceWindow : public QWidget
{
    Q_OBJECT
public:
    explicit MultiChoiceWindow(QWidget *parent = 0);
    ~MultiChoiceWindow();
private slots:
    void on_pushButton_clicked();
private:
    Ui::MultiChoiceWindow *ui;
};
#endif // MULTICHOICEWINDOW_H
 
//multichoicewindow.cpp
 
#include "multichoicewindow.h"
#include "ui_multichoicewindow.h"
#include "designerwidget.h"
#include "dialog.h"
MultiChoiceWindow::MultiChoiceWindow(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MultiChoiceWindow)
{
    ui->setupUi(this);
}
MultiChoiceWindow::~MultiChoiceWindow()
{
    delete ui;
}
void MultiChoiceWindow::on_pushButton_clicked()
{
    QWidget *w=0;
       if(ui->radioManual->isChecked())
           //w = new ManualWidget();
           w = new Dialog();
       else
           w = new DesignerWidget();
       if(ui->radioModal->isChecked())
           w->setWindowModality(Qt::ApplicationModal); //set modal dialog
       w->setWindowTitle(ui->titleEdit->text());
       w->show();
}
 
 
//multichoicewindow.ui
Qt学习例子4鈥斺擳est2_1

 

//main.cpp

 

 

//#include <QtCore/QCoreApplication>
#include <QApplication>
#include "dialog.h"
#include "designerwidget.h"
#include "multichoicewindow.h"
#include "calculator.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MultiChoiceWindow mc;
mc.show();
return a.exec();
}

 

 

 

程序运行结果图:

 

 Qt学习例子4鈥斺擳est2_1

Qt学习例子4鈥斺擳est2_1

Qt学习例子4鈥斺擳est2_1 

Qt学习例子4鈥斺擳est2_1 

Qt学习例子4鈥斺擳est2_1 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值