Qt之ui在程序中的使用-多继承法介绍_C 语言

thirdDialog.h

复制代码 代码如下:

#ifndef THIRDDIALOG_H
#define THIRDDIALOG_H
#include <QtGui>
#include "ui_third.h"
class thirdDialog:public QDialog,private Ui::Third
{
Q_OBJECT
public:
thirdDialog(QWidget *parent=0);
~thirdDialog();
};
#endif

thirdDialog.cpp
#include "thirdDialog.h"
thirdDialog::thirdDialog(QWidget *parent)
{
setupUi(this);
}
thirdDialog::~thirdDialog()
{
}

maindialog.h

复制代码 代码如下:

#ifndef MAINDIALOG_H
#define MAINDIALOG_H
#include <QtGui>
#include "ui_first.h"
#include "ui_second.h"
#include "thirdDialog.h"

class MainDialog : public QDialog
{
Q_OBJECT
public:
MainDialog(QWidget *parent = 0, Qt::WFlags flags = 0);
~MainDialog();
private:
Ui::First firstUi;
Ui::Second secondUi;
private slots:
void on_btnChild_clicked();
};
#endif // MAINDIALOG_H

maindialog.cpp

复制代码 代码如下:

#include "maindialog.h"
MainDialog::MainDialog(QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
QTabWidget *tabWidget = new QTabWidget(this);
QDialog *w1 = new QDialog;
firstUi.setupUi(w1);
QWidget *w2 = new QWidget;
secondUi.setupUi(w2);
tabWidget->addTab(w1,tr("First Tab"));
tabWidget->addTab(w2,tr("Second Tab"));
tabWidget->resize(300,300);
connect(firstUi.btnClose,SIGNAL(clicked()),this,SLOT(close()));
connect(secondUi.btnChild,SIGNAL(clicked()),this,SLOT(on_btnChild_clicked()));
}
MainDialog::~MainDialog()
{
}
void MainDialog::on_btnChild_clicked()
{
thirdDialog *dlg = new thirdDialog;
dlg->exec();
}

分析:
多继承方式可直接对ui界面上的控件或函数进行操作,代码编写更简洁;
而是用单继承方式,在操作ui页面上的控件时需加上ui对象前缀,编写代码较为麻烦。
但,对于程序中所需ui页面较多时,使用单继承法则要灵活的多。。

时间: 2025-01-05 06:13:25

Qt之ui在程序中的使用-多继承法介绍_C 语言的相关文章

C及C++中typedef的简单使用介绍_C 语言

typedef 声明,简称 typedef,为现有类型创建一个新的名字.比如人们常常使用 typedef 来编写更美观和可读的代码.所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性. 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明. 又是在学数据结构的时候,发现了之前学习的知识遗忘很多,在发现对C/C++中关键字typedef的理解还是没有到位后,我翻阅了学C++

C++中strtok()函数的用法介绍_C 语言

函数原型:char *strtok(char *s, const char *delim);Function:分解字符串为一组字符串.s为要分解的字符串,delim为分隔符字符串.Description:strtok()用来将字符串分割成一个个片段.参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时 则会将该字符改为\0 字符.在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL.每次调

C语言中基础小问题详细介绍_C 语言

1.printf格式输出函数 如果格式控制说明项数多于输出表列个数,则会输出错误数据:如果输出表列个数多于格式控制说明数,则多出数不被输出.%md,m指的是输出字段的宽度.如果输出字段位数小于m,则左端以空格补齐,若大于m,则按照实际位数输出.%-md,基本同上,只不过不同之处在于,空格在右端补齐printf参数可以是常量,变量或表达式,VC++ 6.0中采用从右向左顺序求值,从左向右输出如 复制代码 代码如下: int x = 5; printf("%4d%4d%4d", x, ++

在C语言中转换时间的基本方法介绍_C 语言

C语言mktime()函数:将时间转换成经过的秒数头文件: #include <time.h> 定义函数: time_t mktime(strcut tm * timeptr); 函数说明:mktime()用来将参数timeptr 所指的tm 结构数据转换成从公元1970 年1 月1 日0 时0 分0 秒算起至今的UTC 时间所经过的秒数. 返回值:返回经过的秒数. 范例:用time()取得时间 (秒数), 利用localtime() 转换成struct tm 再利用mktine()将stru

如何在用qt写的android程序中添加.lib?

问题描述 如何在用qt写的android程序中添加.lib? 如何在用qt写的android程序中添加.lib?同一样的程序运行desktop版的就可以,但运行android版时就说找不到-lzlib-lSDLmain-llibcurl_imp 等等.

深入解析C语言中的内存分配相关问题_C 语言

C内存分配区域 程序代码区存放函数体的二进制代码 全局数据区全局变量和静态变量的存储是放在一起的.初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域.常量数据存放在另一个区域里.这些数据在程序结束后由系统释放.我们所说的BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Block Started by Symbol的简称 栈区由编译器自动分配释放,存放函数的参数值,局部变量的值等.其操作方式类似于数据

C++编程中的函数指针初步解析_C 语言

1.定义每一个函数都占用一段内存单元,它们有一个起始地址,指向函数入口地址的指针称为函数指针.2.语法指向函数的指针变量的一般定义形式为: 数据类型 (*指针变量名)(参数表);3.说明1) 函数指针的定义形式中的数据类型是指函数的返回值的类型. 2) 区分下面两个语句: int (*p)(int a, int b); //p是一个指向函数的指针变量,所指函数的返回值类型为整型 int *p(int a, int b); //p是函数名,此函数的返回值类型为整型指针 3) 指向函数的指针变量不是

在C语言编程中使用变量的基础教程_C 语言

C语言在明面上将数的变量分为两类,整型变量以及浮点数,对应着现实世界的整数和小数. 首先是整数,使用了这么多的C语言之后,每当在使用整数之时都会将其想象成二进制的存在,而不是十进制.原因在于,这是程序的本质所在,稍有研究编译器工作原理的都会发现,在编译器处理乘法乃至除法的时候,优秀的编译器总会想方设法的加快程序的速度,毫无疑问在所有运算中移位运算是最快速的"乘法"以及"除法": 1<<2 == 4 ,8>>2 == 2 而正常一个乘法相当于十

C/C++中extern &quot;C&quot; 的作用分析_C 语言

我们经常会在C/C++程序中见到extern "C",这是一个很重要的概念.本文就来以实例形式讲述C/C++中extern "C"的作用.分享给大家供大家参考之用.具体分析如下: 作用:实现C和C++混合编程. 原理:C和C++编译器编译之后,函数名会编译成不同的名字,链接阶段名字查找会找不到目标,后面实例中会详解. 用法:①.c文件中定义的函数,.cpp文件要调用时,该.cpp文件中要用extern "C"声明该函数:②.反过来,.cpp文件中