• qt5-QObject


    cpp文件

    #include "win.h"
    #include "ui_win.h"
    
    Win::Win(QWidget *parent)
        : QDialog(parent)
        , ui(new Ui::Win)
    {
        ui->setupUi(this);
    
        QLabel* label=new QLabel("我是中国人");
    
        label->setObjectName("ppp"); //设置ObjectName属性
        QString str=label->objectName();  //返回ObjectName属性
    
        label->setParent(this);  //设置父对象
        //label->setParent(NULL);  //释放父对象
        label->move(10,10);
    
        QPushButton* button=new QPushButton("正确",this);
        button->move(100,10);
    
        button->setProperty("lm",51);  //给控件设置自定义属性和属性值
        button->setProperty("lmm",100);
        //可以设置多个属性和属性值
      //需要
    #include <QVariant>

    QVariant v=button->property("lm"); //返回属性值 //QVariant(int, 51) button->setObjectName("bbb"); QList<QByteArray> lb=button->dynamicPropertyNames(); //返回所有自定义属性 QObject* object=label->parent(); //返回父对象 //Win(0x76fe1c, name = "Win") QList<QObject*> lq=this->children(); //返回子对象 //(QLabel(0x2efe6e0), QPushButton(0x2efe900)) label1=new QLabel("我是物理教师",this); label1->move(10,30); QLabel* la = this->findChild<QLabel *>("ppp",Qt::FindDirectChildrenOnly); //返回指定类型ObjectName=ppp的第一个子对象 /* this 寻找this的子对象 参数2:Qt::FindDirectChildrenOnly 查找直接孩子 Qt::FindChildrenRecursively 查找所有孩子(递归搜索)--默认 */ la = this->findChild<QLabel *>(QString(),Qt::FindDirectChildrenOnly); //返回指定类型的第一个子对象 la = this->findChild<QLabel *>(); //返回指定类型的第一个子对象 //没找到 返回NULL QList<QLabel*> l = this->findChildren<QLabel*>(); //返回指定类型的所有子对象 //label->deleteLater(); //删除对象,堆中的实际空间也释放了 //不会马上删除,它发出一个删除event,主循环接收到删除event后才删除 bool b=label->isWidgetType(); //判断对象是不是控件 //是 返回true b=label->inherits("QWidget"); //判断对象是不是继承于QWidget类;是返回True connect(button, SIGNAL(clicked()),this, SLOT(ff())); //信号 connect(label1, SIGNAL(destroyed()),this, SLOT(destroyed())); //在对象label1被销毁之前立即发出这个信号,不能被阻止 //button->blockSignals(true); //临时阻断信号与槽函数的连接 //False 恢复连接 b=button->signalsBlocked(); //判断信号是否被临时阻断;Ture被阻断 connect(label1, SIGNAL(objectNameChanged(QString)),this, SLOT(AA(QString))); //在objectName属性发生变化时发出信号 qDebug()<<b; } Win::~Win() { delete ui; } void Win::destroyed() { qDebug()<<"label1被销毁了"; } void Win::ff() { //label1->deleteLater(); label1->setObjectName("mmm"); } void Win::AA(QString s) { QObject * ject= sender(); //返回发送者指针 qDebug()<<s<<ject; }

    h文件

    #ifndef WIN_H
    #define WIN_H
    
    #include <QDialog>
    #include <QLabel>
    #include <QDebug>
    #include <QPushButton>
    #include <QString>
    #include<QVariant>
    
    QT_BEGIN_NAMESPACE
    namespace Ui { class Win; }
    QT_END_NAMESPACE
    
    class Win : public QDialog
    {
        Q_OBJECT
    
    public:
        Win(QWidget *parent = nullptr);
        ~Win();
    
    private:
        Ui::Win *ui;
        QLabel* label1;
    
    public slots:
        void destroyed();
        void ff();
        void AA(QString);
    
    };
    #endif // WIN_H

    main文件

    #include "win.h"
    
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        Win w;
        w.show();
        return a.exec();
    }

    以上工程下载地址:链接:https://pan.baidu.com/s/1CEPz40YgHpef1WWmtBSEOw       提取码:6666

  • 相关阅读:
    Beta冲刺阶段
    用例图练习
    第四次作业--个人作业--必应词典案例分析
    第五次作业——团队项目——需求规格说明书
    结对编程第三次作业
    第二次作业— —结对项目
    Git使用心得
    Android平台的开发环境的发展演变
    软件工程的实践项目的自我目标
    面试中遇到的问题
  • 原文地址:https://www.cnblogs.com/liming19680104/p/13697549.html
Copyright © 2020-2023  润新知