QT在自定义类中调用主类(界面类ui及其控件)的一种实用方法

这篇具有很好参考价值的文章主要介绍了QT在自定义类中调用主类(界面类ui及其控件)的一种实用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在实际应用中,经常会出现需要自定义类访问界面中的控件的情况,使用信号和槽进行跳转往往过于繁琐,使用下述方法可以巧妙解决:

界面类

QtWidgetsTest.h

#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsTest.h"
#include "CustomClass.h"
class QtWidgetsTest : public QMainWindow
{
    Q_OBJECT

public:
    QtWidgetsTest(QWidget *parent = nullptr);
    Ui::QtWidgetsTestClass ui;
    CustomClass* customClass;
};

QtWidgetsTest.cpp

#include "QtWidgetsTest.h"

QtWidgetsTest::QtWidgetsTest(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    customClass = new CustomClass(this); // 使用this指针实例化自定义类对象
    customClass->test(); // 调用函数
}

自定义类

CustomClass.h

  1. 首先包含ui头文件(其实也可不写,因为cpp里一定会包含QtWidgetsTest.h并包含ui文件),并声明界面类,注意此处不能使用包含,否则会报重复包含头文件的错误。
  2. 继承QMainWindow类,便于使用connect方法。
  3. 在构造时使用一个界面类指针作为参数,并在成员变量中定义一个界面类指针。
#pragma once

#include "ui_QtWidgetsTest.h"

class QtWidgetsTest;
class CustomClass : public QMainWindow
{
public:
	CustomClass(QtWidgetsTest* parent = nullptr);
	void test();
	QtWidgetsTest* p;
};

CustomClass.cpp

  1. 包含界面类,否则报未定义QtWidgetsTest
  2. 在构造中将成员变量的指针指向界面类传来的指针变量。
#include "CustomClass.h"
#include "QtWidgetsTest.h"
CustomClass::CustomClass(QtWidgetsTest* parent)
{
	p = parent;
}
void CustomClass::test() {
	p->ui.pushButton->setText("test");
	connect(p->ui.pushButton, &QPushButton::clicked, [=]() {
		p->ui.pushButton->setText("clicked");
		});
}

这里实现了在自定义类中访问ui控件并使用connect方法调用成员函数,避免了频繁使用信号和槽跳转。如果涉及到多线程将自定义类继承QThread并在start方法中访问ui。文章来源地址https://www.toymoban.com/news/detail-588456.html

到了这里,关于QT在自定义类中调用主类(界面类ui及其控件)的一种实用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt子线程控制主界面UI控件

    在子线程里控制主界面的UI控件有两种方法:第一种是在子线程中发送信号,然后在主线程中去更新;第二种方法是在子线程中创建同样的对象,然后把主界面中控件的指针赋给创建的对象。 第一种方法在此不做实例展示,在此通过一个简单的例子展示第二种方法: 下面是主

    2024年02月15日
    浏览(37)
  • Qt 6. 其他类调用Ui中的控件

    1. 把主类指针this传给其他类,tcpClientSocket = new TcpClient(this); 2. 把ui类改为公共类 3. 保存主类传来的指针保存,通过该指针调用UI中的控件 4. 在pro文件中增加QT += network 5. 效果

    2024年02月13日
    浏览(25)
  • QT自定义优雅的表单控件,简单实现设置界面布局

    FormView.h FormView.cpp 核心函数 函数 变量 功能 addEditableItem title: 输入框前面的提示文字,同时作为该控件的标识符 place_holder: 输入框中的提示文字 在表单中插入一个可填写项 addCheckableItem title: 不显示在UI中,仅作为该控件的标识符 content: 勾选框后面的内容 init_status: 勾选框的初

    2024年02月11日
    浏览(33)
  • Qt调用主界面ui

    在其他类中使用主界面ui,this,控件操作等 首先,子类需要包含主界面的头文件和ui_xx.h文件,声明主界面类 然后使用构造函数把主界面的指针传递给子类 子类头文件: 子类cpp文件: 主界面头文件设置ui为公有: 主界面cpp文件设置: 效果图:

    2024年02月02日
    浏览(44)
  • 【QT】自定义对话框及其调用

    目录 1 对话框的不同调用方式 2 对话框QWDialogSize的创建和使用 3 对话框QWDialogHeaders的创建和使用 4 对话框QWDialogLocate的创建与使用 5 利用信号与槽实现交互操作          在一个应用程序设计中,为了实现一些特定的功能,必须设计自定义对话框。自定义对话框 的设计一般

    2024年01月17日
    浏览(31)
  • c#WPF 自定义UI控件学习,vb.net界面UI美化

    最近项目中运用到了WPF处理三维软件,在C/S结构中WPF做UI还是有很多优越性,简单的学了一点WPF知识,成功的完成项目目标。项目过度阶段对于WPF的一些基本特点有了进一步了解 。至此花费一点时间研究研究WPF控件。 为以后的项目开发中提供一些可观的资源也是不错的。 目

    2024年02月20日
    浏览(38)
  • 【五一创作】VS+Qt主界面内嵌自定义控件的四种方法以及不同自定义控件数据交互

    在Qt界面开发过程中,一个主界面或者主窗口看成是各个控件排列组合后的集合,对于一些项目而言,有些常用的控件可以封装成自己想要的控件样式并且复用,比如说,log显示控件,图像/视频显示控件等,可以将常用的控件代码封装起来,以便下次复用,内嵌在不同的主界

    2024年02月11日
    浏览(51)
  • 将QT的UI界面转换成python文件并调用

    在QTcreator中或者QTdesigner中画好的ui界面转换成python文件,在pycharm中直接调用。 在pycharm中的终端运行命令 : *.py是对应生成的python文件的名字,*.ui是画的UI界面(对应ui界面的路径) 然后就会生成login.py文件,如下: 调用文件: 运行结果:

    2024年02月11日
    浏览(35)
  • Qt/C++自定义界面大全/20套精美皮肤/26套精美UI界面/一键换肤/自定义颜色/各种导航界面

    这个系列对应自定义控件大全,一个专注于控件的编写,一个专注于UI界面的编写,程序员有两大软肋,一个是忌讳别人说自己的程序很烂很多bug,一个就是不擅长UI,基本上配色就直接rgb,对于第一点,只要放松心态,直面自己的不足,不断改进,才能问鼎武林至尊。至于第

    2024年01月20日
    浏览(27)
  • 06-2_Qt 5.9 C++开发指南_自定义对话框及其调用

    本篇介绍到的对话框及其调用实例较为复杂但十分详细,如果做了解可以先参考:QT从入门到实战x篇_13_模态和非模态对话框创建。 在一个应用程序设计中,为了实现一些特定的功能,必须设计自定义对话框。自定义对话框的设计一般从QDialog 继承,并且可以采用 UI 设计器可

    2024年02月13日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包