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真用!
源码: