QT纯代码设计UI界面&Demo

目录

一、前言

二、界面

三、源码简析

四、Demo/源码


一、前言

UI的设计方法有几种:

①一种是使用Qt Designer,也就是可视化设计,这在小型项目中常见,优点就是可观简便;

②另一种就是纯代码设计UI,也就是不可视设计UI,这在中大型项目常见,优点是界面隐蔽性强。

无论那种方式,实际上都是转化为第二种的方式,只是第一种是QT已经帮忙处理了,处理成第二种纯代码的形式。

本文简析纯代码设计UI的Demo,大家在项目中可以直接套用。

 

二、界面

界面设计很简便,两个label,两个button,button配槽函数,请配合源码看

 

三、源码简析

①源码结构

②工程里需要加入model

CUI.pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = CUI

TEMPLATE = app


SOURCES += main.cpp \
    CUI.cpp

HEADERS += \
    CUI.h

③在main里显示CUI界面类

main.cpp

#include <QApplication>
#include "CUI.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv); //注意是QApplication

    CUI ui;
    ui.show();

    return a.exec();
}

④界面类的设计:

CUI.h

#ifndef CUI_H
#define CUI_H

#include <QWidget>

class CUI : public QWidget
{
    Q_OBJECT
    class Impl;
public:
    explicit CUI(QWidget *parent = 0);
    ~CUI();

private slots:
    void stClickedbutton1();
    void stClickedbutton2();

private:
    //使用智能指针处理界面的内容
    QScopedPointer<Impl>    m_Impl;
};

#endif // CUI_H

CUI.cpp

#include "CUI.h"
#include <QPushButton>
#include <QLabel>
#include <QGridLayout>

//定义界面类的键和函数
class CUI::Impl
{
public:
    QLabel*             label_1;
    QPushButton*        button_1;
    QLabel*             label_2;
    QPushButton*        button_2;

    void setupUi(QWidget* parent);
    void retranslate(QWidget* parent);
    void signalSlot(QWidget* parent);
};

//初始化布局
void CUI::Impl::setupUi(QWidget *parent)
{
    label_1 = new QLabel;
    button_1 = new QPushButton;
    label_2 = new QLabel;
    button_2 = new QPushButton;

    QGridLayout* glayReview = new QGridLayout(parent);
    glayReview->setContentsMargins(10, 10, 10, 10);
    glayReview->addWidget(label_1, 0, 0, 1, 1);
    glayReview->addWidget(button_1, 0, 1, 1, 1);
    glayReview->addWidget(label_2, 1, 0, 1, 1);
    glayReview->addWidget(button_2, 1, 1, 1, 1);

    retranslate(parent);
    signalSlot(parent);
}

//初始化名称size等
void CUI::Impl::retranslate(QWidget* parent)
{
    label_1->setText("label_1");
    button_1->setText("button_1");
    label_2->setText("label_2");
    button_2->setText("button_2");

    label_1->setMinimumWidth(150);
    button_1->setMinimumWidth(100);
    label_2->setMinimumWidth(150);
    button_2->setMinimumWidth(100);

    parent->setFixedSize(250,250);
}

//初始化信号槽
void CUI::Impl::signalSlot(QWidget *parent)
{
    connect(button_1, SIGNAL(clicked()), parent, SLOT(stClickedbutton1()));
    connect(button_2, SIGNAL(clicked()), parent, SLOT(stClickedbutton2()));
}


CUI::CUI(QWidget *parent) :
    QWidget(parent),m_Impl(new Impl)
{
    //设置UI
    m_Impl->setupUi(this);
}

CUI::~CUI()
{
}

void CUI::stClickedbutton1()
{
    m_Impl->label_1->setText("label_1_change");
}

void CUI::stClickedbutton2()
{
    m_Impl->label_2->setText("label_2_change");
}

四、Demo/源码

链接:https://pan.baidu.com/s/1IfprWv2D5nxA88yNFXlPLw 
提取码:pn49

  • 9
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: Qt是一个跨平台的应用程序开发框架,通过使用Qt,可以方便地进行图形界面的设计和开发。下面是一个使用代码设计登录界面的示例代码(基于Qt C++): ```cpp #include <QtWidgets> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建主窗口 QWidget *window = new QWidget; window->setWindowTitle("登录界面"); // 创建用户名和密码的文本框 QLineEdit *usernameLineEdit = new QLineEdit; QLineEdit *passwordLineEdit = new QLineEdit; passwordLineEdit->setEchoMode(QLineEdit::Password); // 创建登录按钮 QPushButton *loginButton = new QPushButton("登录"); // 创建布局管理器 QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(new QLabel("用户名:")); layout->addWidget(usernameLineEdit); layout->addWidget(new QLabel("密码:")); layout->addWidget(passwordLineEdit); layout->addWidget(loginButton); window->setLayout(layout); // 连接登录按钮的点击事件 QObject::connect(loginButton, &QPushButton::clicked, [&]() { QString username = usernameLineEdit->text(); QString password = passwordLineEdit->text(); // TODO: 处理登录逻辑 }); // 显示窗口 window->show(); // 运行应用程序 return app.exec(); } ``` 上述示例代码使用Qt的组件类来创建用户界面元素,例如:`QLineEdit`用于创建文本框,`QPushButton`用于创建按钮。使用`QVBoxLayout`布局管理器来自动布局这些界面元素。 在点击登录按钮后,可以通过接收该按钮的点击事件来获取用户名和密码,并执行登录逻辑。 以上是使用代码设计登录界面的一个简单示例,可以根据实际需求进一步添加和修改界面元素。 ### 回答2: Qt代码设计登录界面可以使用QWidget作为登录界面的父窗口,具体实现如下: 1. 创建一个QWidget对象作为登录界面的主窗口,设置窗口大小和标题。 2. 在主窗口使用QLineEdit控件添加用户名和密码输入框,并设置输入框的样式和大小。 3. 在主窗口使用QPushButton控件添加登录和退出按钮,并设置按钮的样式和大小。 4. 连接登录按钮的clicked信号与槽函数,用于验证用户名和密码的正确性。 5. 如果用户名和密码正确,弹出登录成功的提示框;否则,弹出登录失败的提示框。 6. 连接退出按钮的clicked信号与槽函数,用于关闭登录界面。 7. 设置主窗口布局管理器,将所有控件添加到布局管理器进行布局。 8. 设置主窗口的窗口模式为窗口模态,使得登录界面在打开状态下不能操作其他窗口。 9. 调用主窗口的show()函数展示登录界面。 下面是示例代码: ```cpp #include <QApplication> #include <QWidget> #include <QLineEdit> #include <QPushButton> #include <QMessageBox> #include <QVBoxLayout> class LoginWindow : public QWidget { public: LoginWindow(QWidget *parent = nullptr) : QWidget(parent) { // 设置窗口大小和标题 setFixedSize(300, 200); setWindowTitle("登录界面"); // 创建用户名和密码输入框 QLineEdit *usernameEdit = new QLineEdit; QLineEdit *passwordEdit = new QLineEdit; usernameEdit->setPlaceholderText("用户名"); passwordEdit->setPlaceholderText("密码"); usernameEdit->setFixedSize(200, 30); passwordEdit->setFixedSize(200, 30); passwordEdit->setEchoMode(QLineEdit::Password); // 创建登录和退出按钮 QPushButton *loginButton = new QPushButton("登录"); QPushButton *exitButton = new QPushButton("退出"); loginButton->setFixedSize(100, 30); exitButton->setFixedSize(100, 30); // 连接登录按钮的clicked信号与槽函数 connect(loginButton, &QPushButton::clicked, [=]() { QString username = usernameEdit->text(); QString password = passwordEdit->text(); // 验证用户名和密码的正确性 if (username == "admin" && password == "123456") { QMessageBox::information(this, "提示", "登录成功"); } else { QMessageBox::warning(this, "提示", "用户名或密码错误"); } }); // 连接退出按钮的clicked信号与槽函数 connect(exitButton, &QPushButton::clicked, [=]() { close(); }); // 设置布局管理器 QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(usernameEdit); layout->addWidget(passwordEdit); layout->addWidget(loginButton); layout->addWidget(exitButton); setLayout(layout); // 设置窗口模态 setWindowModality(Qt::ApplicationModal); } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); LoginWindow loginWindow; loginWindow.show(); return app.exec(); } ``` 以上是使用Qt代码设计登录界面的简单示例,登录界面包含了用户名和密码的输入框,以及登录和退出按钮。用户在输入正确的用户名和密码后,弹出登录成功的提示框;否则,弹出登录失败的提示框。 ### 回答3: Qt是一个跨平台的C++应用程序开发框架,可以用于构建各种图形用户界面(GUI)应用程序。要使用代码设计Qt登录界面,我们可以按照以下步骤进行: 1. 首先,创建一个Qt应用程序项目并打开Qt Creator。 2. 在Qt Creator,新建一个QWidget类作为登录界面的窗口。 3. 在窗口的头文件包含必要的Qt库头文件,并声明所需的成员变量和槽函数。 4. 在窗口的源文件,实现构造函数和析构函数,并初始化界面和成员变量。 5. 在构造函数,创建布局管理器(如QVBoxLayout或QGridLayout)并将窗口的心部分设置为该布局管理器。 6. 在布局管理器,使用各种Qt控件(如QLabel、QLineEdit和QPushButton)来构建登录界面的各个组件。 7. 使用布局管理器的addLayout()和addWidget()方法将控件添加到布局。 8. 在槽函数处理登录按钮的点击事件,验证用户输入的用户名和密码,并根据验证结果执行相应的操作(如弹出提示框或打开主界面)。 9. 最后,将视觉样式(如字体、颜色和大小)应用于控件,并将布局管理器应用于窗口。 10. 编译和运行应用程序,即可看到代码设计Qt登录界面。 需要注意的是,以上步骤只是大致的设计思路,具体的实现细节还需根据实际需要进行调整。此外,Qt还提供了丰富的控件和功能,可以根据项目需求进行定制和扩展。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值