QT的UI练习

QT的UI练习

练习1

效果图:
在这里插入图片描述
目录
在这里插入图片描述
UI界面的控件命名
在这里插入图片描述

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    
//槽函数定义
private slots:
    void on_Mid_clicked();
    void on_add_clicked();
    void on_length_clicked();
    void on_indexOf_clicked();
    void on_ToUpper_clicked();
    void on_addSubstr_clicked();
    void on_whichBig_clicked();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    //connect(ui->Mid, SIGNAL(clicked()), ui->label_3, SLOT(on_Mid_clicked()));
    //connect(ui->add, SIGNAL(clicked()), ui->LabelAddresult, SLOT(on_add_clicked()));
    //connect(ui->length, SIGNAL(clicked()), ui->label_4, SLOT(on_length_clicked()));
}

Widget::~Widget()
{
    delete ui;
}

//槽函数,这里函数的命名用了官方的on_控件名_clicked的方式,所以上面的connect连接函数可省略,但如果自己命名则要写
void Widget::on_Mid_clicked()
{
   QString s1 = ui->LineOrg->text();
   QString s3 = s1.mid(2,3);
   ui->label_3->setText(s3);
}

void Widget::on_add_clicked()
{
    QString s1 = ui->Linefirst->text();
    QString s2 = ui->LineSecond->text();
    double a1 = s1.toDouble();
    double a2 = s2.toDouble();
    a1 = a1 + a2;
    s1 = QString::number(a1);
    ui->LabelAddresult->setText(s1);
}

void Widget::on_length_clicked()
{
   QString s1 = ui->LineOrg->text();
   int s3 = s1.length();
   QString s4 = QString::number(s3);
   ui->label_4->setText(s4);
}

void Widget::on_indexOf_clicked()
{
   QString s1 = ui->LineSubstr->text();
   int s3 = s1.length();
   QString s4 = QString::number(s3);
   ui->label_5->setText(s4);
}

void Widget::on_ToUpper_clicked()
{
   QString s1 = ui->LineOrg->text();
   QString s3 = s1.toUpper();
   ui->label_6->setText(s3);
}

void Widget::on_addSubstr_clicked()
{
   QString s1 = ui->LineOrg->text();
   QString s2 = ui->LineSubstr->text();
   QString s3 = s1+s2;
   ui->label_7->setText(s3);
}

void Widget::on_whichBig_clicked()
{
   QString s1 = ui->LineOrg->text();
   QString s2 = ui->LineSubstr->text();
   int s3 = s1.length();
   int s4 = s2.length();
   if(s3>s4)
   {
      ui->label_8->setText("True");
   }
   else
   {
      ui->label_8->setText("Flase");
   }
}

main.cpp(用自动生成的就好不用动)

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

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

练习2

效果:
在这里插入图片描述
目录:
在这里插入图片描述
UI界面的控件命名
在这里插入图片描述

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

//槽函数的定义
private slots:
    void on_add_clicked();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

//槽函数的实现
void Widget::on_add_clicked()
{
   QString s1 = ui->lineEdit->text();
   QString s2 = ui->lineEdit_2->text();
   QString s3;
   if(ui->radioButton->isChecked())
   {
       s3 = ui->radioButton->text();
   }
   else if(ui->radioButton_2->isChecked())
   {
       s3 = ui->radioButton_2->text();
   }
   QString s4 = ui->textEdit->toPlainText();
   QString s5 = ui->textEdit_2->toPlainText();
   QString s6 = "Name:"+s1+"\n"+"Age:"+s2+"\n"+"Gender:"+s3+"\n"+"Degree:\n"+s4+"\n"+"Department:\n"+s5;
   ui->textEdit_3->setText(s6);
}

mian.cpp(用自动生成的就好不用动)

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

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

练习3

效果:
点击左菜单的父节点,右边的内容会发生变化;
点击左菜单的子节点,右边的内容会发生变化,且会弹出提示框;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
UI界面的控件命名
在这里插入图片描述

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QStackedWidget>
#include <QMessageBox>
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

//槽函数定义
public slots:
    void item_clicked(QTreeWidgetItem* item,int colum);
    void on_treeWidget_clicked(const QModelIndex &index);


private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect(ui->treeWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(item_clicked(QTreeWidgetItem*,int)));

}

Widget::~Widget()
{
    delete ui;
}

//这里用的是自己命名的,所以上面要用connect来连接
void Widget::item_clicked(QTreeWidgetItem* item,int colum)
{
    QString str=item->text(colum);
    if(str=="gg")
    {
    ui->stackedWidget->setCurrentIndex(0);
    QMessageBox::warning(this,"点击","你点击了\'"+str+"\'",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
    }
    else if(str=="book")
    {
      ui->stackedWidget->setCurrentIndex(1);
      QMessageBox::warning(this,"点击","你点击了\'"+str+"\'",QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
    }
}

//这里用官方命名,所以上面不用写connect来连接
void Widget::on_treeWidget_clicked(const QModelIndex &index)
{
    QString str = index.data(Qt::DisplayRole).toString();
    if(str=="本地磁盘C:")
    {
    ui->stackedWidget->setCurrentIndex(0);
    }
    else if(str=="本地磁盘D:")
    {
      ui->stackedWidget->setCurrentIndex(1);
    }
}

mian.cpp(用自动生成的就好不用动)

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

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

在这里插入图片描述
喜欢的朋友可以关注我的个人公众号,后台回复java资料可免费领取资源。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值