2021-01-07 加载ui界面,loader以及使用界面上的控件信息

pro:

#-------------------------------------------------
#
# Project created by QtCreator 2020-12-11T11:27:00
#
#-------------------------------------------------

QT       += core gui
CONFIG   += uitools
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = TransferUitools
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += \
        main.cpp \
        mianwtransferuitools.cpp

HEADERS += \
        mianwtransferuitools.h

FORMS += \
        mianwtransferuitools.ui

RESOURCES += \
    uitoolssource.qrc

源码:

mianwtransferuitools.h

#ifndef MIANWTRANSFERUITOOLS_H
#define MIANWTRANSFERUITOOLS_H
#include <QMainWindow>
#include <QtUiTools/QtUiTools>
#include <QtUiTools/QUiLoader>

namespace Ui {
class MianWTransferUitools;
}

class MianWTransferUitools : public QMainWindow
{
    Q_OBJECT

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

    QUiLoader loader;

    QWidget* widget;
private slots:
    void on_TransferPbtn_Uitoolone_clicked();
    void setPBtnClicked();

private:
    Ui::MianWTransferUitools *ui;
};

#endif // MIANWTRANSFERUITOOLS_H

mianwtransferuitools.cpp:

#include "mianwtransferuitools.h"
#include "ui_mianwtransferuitools.h"
#include <QMessageBox>
#include <QDebug>
#include <QtWidgets>

MianWTransferUitools::MianWTransferUitools(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MianWTransferUitools)
{
    ui->setupUi(this);
    QFile file(":/forms/uitoolone.ui");
    bool utoolone = file.open(QFile::ReadOnly);
    if(utoolone==true)
    {
        widget = loader.load(&file);
    }
    else
    {
        QMessageBox::information(this,"test","uitoolone.ui加载失败",QMessageBox::Ok|QMessageBox::No);
    }
    file.close();

//    qDebug()<<"123";
}

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

void MianWTransferUitools::on_TransferPbtn_Uitoolone_clicked()
{
    static bool load =false;

    if(widget==Q_NULLPTR)
        return;

    if(widget!=Q_NULLPTR)
        widget->show();

    if(widget!=Q_NULLPTR&&load ==false)
    {
        //1.查找名称为“读写的”QPushButton
        QPushButton *getButton = widget->findChild<QPushButton *>("PBtn");

        connect(getButton,SIGNAL(clicked()),this,SLOT(setPBtnClicked()));
        //处理ui_setButton的clicked()信号。
        //但拜元对象机制所赐,还有一劳永逸的方法
        QMetaObject::connectSlotsByName(this);

        //2.查找所有QPushButton
        //QList<QPushButton *> getAllPButtons = getWidget->findChildren<QPushButton *>();
        //该函数会将this的所有子对象都连接上一个槽(slot),槽的命名规范为
        //on_对象名_信号名,比如上面的setButton的clicked(),
        //将会生成一个on_setButton_clicked()的槽,你只要实现该槽函数就可以了。
        load = true;
    }
}

void MianWTransferUitools::setPBtnClicked()
{

    QString str1,str2;
    if(widget==Q_NULLPTR)
        return;

    QList<QLineEdit *> getLineEdit = widget->findChildren<QLineEdit *>();
    for (int i=0;i<getLineEdit.count();i++)
    {
        QString str = getLineEdit.at(i)->toolTip();
        QStringList list = str.split(".");
        qDebug()<<list[0]<<" "<<list[1];
    }


    QMessageBox::information(this,"test","xx",QMessageBox::Ok|QMessageBox::No);
}
QPushButton *getButton = widget->findChild<QPushButton *>("PBtn");
QList<QLineEdit *> getLineEdit = widget->findChildren<QLineEdit *>();

重点是findChild,findChildren真用!

源码:

https://pan.baidu.com/s/1PIl0Lvxyx-htF6akeglZ7w
提取码:x7fp 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值