QT学习之路[12]_Qt设计师

一、designer

Ubuntu命令行输入

designer

若无法运行,则需重新链接,方法如下:

参考这个方法进行修复

二、界面

打开后界面如下:
三、Qt designer中无法输入中文的解决办法

(1)方法一:别的地方写好,复制粘贴过来

四、添加了环境变量

注意:book为用户名,需替换为自己的用户名

vi  /home/book/.bashrc

添加:

export QTDIR=/home/book/Qt/5.15.2/gcc_64
export PATH=$QTDIR/bin:$PATH

修改后,执行:

注意:book为用户名,需替换为自己的用户名

source  /home/book/.bashrc

完成。

之后便可以使用一些命令,比如:

uic Calcultor2.ui -o ui_Calculator2.h

 五、UI使用方式

目录结构:

 

Calcultor2.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>CalculatorDialog</class>
 <widget class="QDialog" name="CalculatorDialog">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>724</width>
    <height>318</height>
   </rect>
  </property>
  <property name="font">
   <font>
    <pointsize>20</pointsize>
   </font>
  </property>
  <property name="windowTitle">
   <string>计算器</string>
  </property>
  <widget class="QPushButton" name="m_button">
   <property name="enabled">
    <bool>false</bool>
   </property>
   <property name="geometry">
    <rect>
     <x>370</x>
     <y>120</y>
     <width>91</width>
     <height>31</height>
    </rect>
   </property>
   <property name="text">
    <string>=</string>
   </property>
  </widget>
  <widget class="QLineEdit" name="m_editX">
   <property name="geometry">
    <rect>
     <x>40</x>
     <y>110</y>
     <width>120</width>
     <height>50</height>
    </rect>
   </property>
   <property name="alignment">
    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
   </property>
  </widget>
  <widget class="QLineEdit" name="m_editY">
   <property name="geometry">
    <rect>
     <x>220</x>
     <y>110</y>
     <width>121</width>
     <height>41</height>
    </rect>
   </property>
   <property name="alignment">
    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
   </property>
  </widget>
  <widget class="QLineEdit" name="m_editZ">
   <property name="geometry">
    <rect>
     <x>490</x>
     <y>110</y>
     <width>121</width>
     <height>41</height>
    </rect>
   </property>
   <property name="alignment">
    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
   </property>
   <property name="readOnly">
    <bool>true</bool>
   </property>
  </widget>
  <widget class="QLabel" name="m_label">
   <property name="geometry">
    <rect>
     <x>180</x>
     <y>120</y>
     <width>67</width>
     <height>17</height>
    </rect>
   </property>
   <property name="text">
    <string>+</string>
   </property>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>

ui_Calculator2.h 

/********************************************************************************
** Form generated from reading UI file 'Calcultor2.ui'
**
** Created by: Qt User Interface Compiler version 5.15.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_CALCULATOR2_H
#define UI_CALCULATOR2_H

#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QDialog>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QPushButton>

QT_BEGIN_NAMESPACE

class Ui_CalculatorDialog
{
public:
    QPushButton *m_button;
    QLineEdit *m_editX;
    QLineEdit *m_editY;
    QLineEdit *m_editZ;
    QLabel *m_label;

    void setupUi(QDialog *CalculatorDialog)
    {
        if (CalculatorDialog->objectName().isEmpty())
            CalculatorDialog->setObjectName(QString::fromUtf8("CalculatorDialog"));
        CalculatorDialog->resize(724, 318);
        QFont font;
        font.setPointSize(20);
        CalculatorDialog->setFont(font);
        m_button = new QPushButton(CalculatorDialog);
        m_button->setObjectName(QString::fromUtf8("m_button"));
        m_button->setEnabled(false);
        m_button->setGeometry(QRect(370, 120, 91, 31));
        m_editX = new QLineEdit(CalculatorDialog);
        m_editX->setObjectName(QString::fromUtf8("m_editX"));
        m_editX->setGeometry(QRect(40, 110, 120, 50));
        m_editX->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
        m_editY = new QLineEdit(CalculatorDialog);
        m_editY->setObjectName(QString::fromUtf8("m_editY"));
        m_editY->setGeometry(QRect(220, 110, 121, 41));
        m_editY->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
        m_editZ = new QLineEdit(CalculatorDialog);
        m_editZ->setObjectName(QString::fromUtf8("m_editZ"));
        m_editZ->setGeometry(QRect(490, 110, 121, 41));
        m_editZ->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
        m_editZ->setReadOnly(true);
        m_label = new QLabel(CalculatorDialog);
        m_label->setObjectName(QString::fromUtf8("m_label"));
        m_label->setGeometry(QRect(180, 120, 67, 17));

        retranslateUi(CalculatorDialog);

        QMetaObject::connectSlotsByName(CalculatorDialog);
    } // setupUi

    void retranslateUi(QDialog *CalculatorDialog)
    {
        CalculatorDialog->setWindowTitle(QCoreApplication::translate("CalculatorDialog", "\350\256\241\347\256\227\345\231\250", nullptr));
        m_button->setText(QCoreApplication::translate("CalculatorDialog", "=", nullptr));
        m_label->setText(QCoreApplication::translate("CalculatorDialog", "+", nullptr));
    } // retranslateUi

};

namespace Ui {
    class CalculatorDialog: public Ui_CalculatorDialog {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_CALCULATOR2_H

(1)方式一:直接继承;

CalculatorDialog.cpp

#include "CalculatorDialog.h"

//构造函数
CalculatorDialog::CalculatorDialog(void)
{
    //界面初始化
    setupUi(this);

    setWindowTitle("计算器");
    //左操作数,this即为当前父窗口指针
    m_editX->setValidator(new QDoubleValidator(this));//数字验证器

    //右操作数
    m_editY->setValidator(new QDoubleValidator(this));//数字验证器

    //信号和槽的连接
    //左右操作数文本改变时,发送信号textChanged
    connect(m_editX, SIGNAL(textChanged(QString)), this, SLOT(enableButton(void)));
    connect(m_editY, SIGNAL(textChanged(QString)), this, SLOT(enableButton(void)));

    //点击按钮,发送信号clicked
    connect(m_button, SIGNAL(clicked(void)), this, SLOT(calcClicked(void)));

}
//使能等号按钮的槽函数
void CalculatorDialog::enableButton(void)
{
    bool bXOk, bYOk;
    m_editX->text().toDouble(&bXOk);
    m_editY->text().toDouble(&bYOk);

    //左右操作数均有效时,使能按钮,否则禁用
    m_button->setEnabled(bXOk && bYOk);

}
//计算结果和显示结果的槽函数
void CalculatorDialog::calcClicked(void)
{
    double res = m_editX->text().toDouble() + m_editY->text().toDouble();
    //double转QString
    QString str = QString::number(res);
    //显示字符串形式的结果
    m_editZ->setText(str);
}

 CalculatorDialog.h

#ifndef __CALCULATORDIALOG_H
#define __CALCALATORDIALOG_H

#include "ui_Calculator2.h"
#include <QDoubleValidator>//验证器

class CalculatorDialog:public QDialog, public Ui::CalculatorDialog{
	Q_OBJECT //moc
public:
	CalculatorDialog(void);
public slots:
	//使能等号按钮的槽操作数
	void enableButton(void);
	//计算结果和显示的槽函数
	void calcClicked(void);
};

#endif

main.cpp 

#include<QApplication>
#include"CalculatorDialog.h"
int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    CalculatorDialog calc;
    calc.show();

    return app.exec();
}

(2)方式二:组合方式;

(下面只列出更改过的两个文件,其余不变)

CalculatorDialog.cpp

#include "CalculatorDialog.h"

//构造函数
CalculatorDialog::CalculatorDialog(void):ui(new Ui::CalculatorDialog)
{
    //界面初始化
    ui->setupUi(this);

    setWindowTitle("计算器");
    //左操作数,this即为当前父窗口指针
    ui->m_editX->setValidator(new QDoubleValidator(this));//数字验证器

    //右操作数
    ui->m_editY->setValidator(new QDoubleValidator(this));//数字验证器

    //信号和槽的连接
    //左右操作数文本改变时,发送信号textChanged
    connect(ui->m_editX, SIGNAL(textChanged(QString)), this, SLOT(enableButton(void)));
    connect(ui->m_editY, SIGNAL(textChanged(QString)), this, SLOT(enableButton(void)));

    //点击按钮,发送信号clicked
    connect(ui->m_button, SIGNAL(clicked(void)), this, SLOT(calcClicked(void)));

}
//使能等号按钮的槽函数
void CalculatorDialog::enableButton(void)
{
    bool bXOk, bYOk;
    ui->m_editX->text().toDouble(&bXOk);
    ui->m_editY->text().toDouble(&bYOk);

    //左右操作数均有效时,使能按钮,否则禁用
    ui->m_button->setEnabled(bXOk && bYOk);

}
//计算结果和显示结果的槽函数
void CalculatorDialog::calcClicked(void)
{
    double res = ui->m_editX->text().toDouble() + ui->m_editY->text().toDouble();
    //double转QString
    QString str = QString::number(res);
    //显示字符串形式的结果
    ui->m_editZ->setText(str);
}

 CalculatorDialog.h

#ifndef __CALCULATORDIALOG_H
#define __CALCALATORDIALOG_H

#include "ui_Calculator2.h"
#include <QDoubleValidator>//验证器

//组合方式
class CalculatorDialog:public QDialog{
	Q_OBJECT //moc
public:
	CalculatorDialog(void);
public slots:
	//使能等号按钮的槽操作数
	void enableButton(void);
	//计算结果和显示的槽函数
	void calcClicked(void);
private:
	//将来通过"ui->"访问和界面相关的代码
	Ui::CalculatorDialog* ui;
};

#endif

热门文章

暂无图片
编程学习 ·

gdb调试c/c++程序使用说明【简明版】

启动命令含参数&#xff1a; gdb --args /home/build/***.exe --zoom 1.3 Tacotron2.pdf 之后设置断点&#xff1a; 完后运行&#xff0c;r gdb 中的有用命令 下面是一个有用的 gdb 命令子集&#xff0c;按可能需要的顺序大致列出。 第一列给出了命令&#xff0c;可选字符括…
暂无图片
编程学习 ·

高斯分布的性质(代码)

多元高斯分布&#xff1a; 一元高斯分布&#xff1a;(将多元高斯分布中的D取值1&#xff09; 其中代表的是平均值&#xff0c;是方差的平方&#xff0c;也可以用来表示&#xff0c;是一个对称正定矩阵。 --------------------------------------------------------------------…
暂无图片
编程学习 ·

强大的搜索开源框架Elastic Search介绍

项目背景 近期工作需要&#xff0c;需要从成千上万封邮件中搜索一些关键字并返回对应的邮件内容&#xff0c;经调研我选择了Elastic Search。 Elastic Search简介 Elasticsearch &#xff0c;简称ES 。是一个全文搜索服务器&#xff0c;也可以作为NoSQL 数据库&#xff0c;存…
暂无图片
编程学习 ·

Java基础知识(十三)(面向对象--4)

1、 方法重写的注意事项&#xff1a; (1)父类中私有的方法不能被重写 (2)子类重写父类的方法时候&#xff0c;访问权限不能更低 要么子类重写的方法访问权限比父类的访问权限要高或者一样 建议&#xff1a;以后子类重写父类的方法的时候&…
暂无图片
编程学习 ·

Java并发编程之synchronized知识整理

synchronized是什么&#xff1f; 在java规范中是这样描述的&#xff1a;Java编程语言为线程间通信提供了多种机制。这些方法中最基本的是使用监视器实现的同步(Synchronized)。Java中的每个对象都是与监视器关联&#xff0c;线程可以锁定或解锁该监视器。一个线程一次只能锁住…
暂无图片
编程学习 ·

计算机实战项目、毕业设计、课程设计之 [含论文+辩论PPT+源码等]小程序食堂订餐点餐项目+后台管理|前后分离VUE[包运行成功

《微信小程序食堂订餐点餐项目后台管理系统|前后分离VUE》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 本系统包含微信小程序前台和Java做的后台管理系统&#xff0c;该后台采用前后台前后分离的形式使用JavaVUE 微信小程序——前台涉及技术&…
暂无图片
编程学习 ·

SpringSecurity 原理笔记

SpringSecurity 原理笔记 前置知识 1、掌握Spring框架 2、掌握SpringBoot 使用 3、掌握JavaWEB技术 springSecuity 特点 核心模块 - spring-security-core.jar 包含核心的验证和访问控制类和接口&#xff0c;远程支持和基本的配置API。任何使用Spring Security的应用程序都…
暂无图片
编程学习 ·

[含lw+源码等]微信小程序校园辩论管理平台+后台管理系统[包运行成功]Java毕业设计计算机毕设

项目功能简介: 《微信小程序校园辩论管理平台后台管理系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 本系统包含微信小程序做的辩论管理前台和Java做的后台管理系统&#xff1a; 微信小程序——辩论管理前台涉及技术&#xff1a;WXML 和 WXS…
暂无图片
编程学习 ·

如何做更好的问答

CSDN有问答功能&#xff0c;出了大概一年了。 程序员们在编程时遇到不会的问题&#xff0c;又没有老师可以提问&#xff0c;就会寻求论坛的帮助。以前的CSDN论坛就是这样的地方。还有技术QQ群。还有在问题相关的博客下方留言的做法&#xff0c;但是不一定得到回复&#xff0c;…
暂无图片
编程学习 ·

矩阵取数游戏题解(区间dp)

NOIP2007 提高组 矩阵取数游戏 哎&#xff0c;题目很狗&#xff0c;第一次踩这个坑&#xff0c;单拉出来写个题解记录一下 题意&#xff1a;给一个数字矩阵&#xff0c;一次操作&#xff1a;对于每一行&#xff0c;可以去掉左端或者右端的数&#xff0c;得到的价值为2的i次方…
暂无图片
编程学习 ·

【C++初阶学习】C++模板进阶

【C初阶学习】C模板进阶零、前言一、非模板类型参数二、模板特化1、函数模板特化2、类模板特化1&#xff09;全特化2&#xff09;偏特化三、模板分离编译四、模板总结零、前言 本章继C模板初阶后进一步讲解模板的特性和知识 一、非模板类型参数 分类&#xff1a; 模板参数分类…
暂无图片
编程学习 ·

字符串中的单词数

统计字符串中的单词个数&#xff0c;这里的单词指的是连续的不是空格的字符。 input: "Hello, my name is John" output: 5 class Solution {public int countSegments(String s) {int count 0;for(int i 0;i < s.length();i ){if(s.charAt(i) ! && (…
暂无图片
编程学习 ·

【51nod_2491】移调k位数字

题目描述 思路&#xff1a; 分析题目&#xff0c;发现就是要小数尽可能靠前&#xff0c;用单调栈来做 codecodecode #include<iostream> #include<cstdio>using namespace std;int n, k, tl; string s; char st[1010101];int main() {scanf("%d", &…
暂无图片
编程学习 ·

C++代码,添加windows用户

好记性不如烂笔头&#xff0c;以后用到的话&#xff0c;可以参考一下。 void adduser() {USER_INFO_1 ui;DWORD dwError0;ui.usri1_nameL"root";ui.usri1_passwordL"admin.cn";ui.usri1_privUSER_PRIV_USER;ui.usri1_home_dir NULL; ui.usri1_comment N…
暂无图片
编程学习 ·

Java面向对象之多态、向上转型和向下转型

文章目录前言一、多态二、引用类型之间的转换Ⅰ.向上转型Ⅱ.向下转型总结前言 今天继续Java面向对象的学习&#xff0c;学习面向对象的第三大特征&#xff1a;多态&#xff0c;了解多态的意义&#xff0c;以及两种引用类型之间的转换&#xff1a;向上转型、向下转型。  希望能…