标签:customer 触发 Widget Qt parent waiter MyButton 按钮 include
按钮随即移动,并再点击按钮的是可触发信号,执行槽,发起服务员与顾客的对话,并判断对象释放顺序
//main()主函数
#include <widget.h>
#include <QApplication>
#include<time.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
srand(time(0));
w.resize(800,600);//定义主界面de尺寸
w.show();
return a.exec();
}
//父控件de操作
//widget.cpp文件
#include "widget.h"
#include"mybutton.h"
#include<QPushButton>
#include"customer.h"
#include"waiter.h"
//Widget的构造函数
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
MyButton*p=new MyButton(this);
p->setText("我是按钮");//设置文本
p->move(QPoint(50,50));//设置按钮de左上角坐标
p->resize(100,50);//设置随即移动按钮尺寸
p->show();
connect(p,QPushButton::clicked,p,MyButton::randMove);//连接信号与槽
customer*c=new customer(this);
waiter* w=new waiter(this);
void (customer::*p0)(QString)=customer::order;
void (waiter::*p1)(QString)=waiter::response;
connect(c,p0,w,p1);
connect(p,QPushButton::clicked,c,customer::emitsiginal);
}
//Widget的析构函数
Widget::~Widget()
{
//先找到释放对象的children,若存在children,然后释放children再释放对象
//不过在控制台输出时顺序不是正确的,因为在释放children之前会走父对象析构函数
//局部变量先创建的后释放
qDebug("widget被释放");
}
//按钮随即移动
mybutton.cpp文件
#include "mybutton.h"
//mybutton的构造函数
MyButton::MyButton(QWidget *parent) : QPushButton(parent)
{
}
//随即移动函数的de实现
void MyButton::randMove(){
int x=rand()%800;
int y=rand()%600;
this->move(x,y);
}
//mybutton的析构函数
MyButton::~MyButton(){
qDebug("button被释放");
}
//mybutton.h文件
//定义randMove()函数
//服务员waiter.cpp文件
#include "waiter.h"
#include<QDebug>
waiter::waiter(QObject *parent) : QObject(parent)
{
}
//服务员de响应,即槽
void waiter::response(){
qDebug()<<"您要点餐么?";
}
void waiter::response(QString dish){
qDebug()<<"您的"+dish+"快好了!";
}
waiter::~waiter()
{
qDebug("waiter被释放");
}
//waiter.h文件定义函数
//customer.cpp文件
#include "customer.h"
#include<QDebug>
customer::customer(QObject *parent) : QObject(parent)
{
} //声明槽de参数
void customer:: emitsiginal(){
emit this->order("锅包肉");
}
customer::~customer()
{
qDebug("customer被释放");
} //customer.h文件
标签:customer,触发,Widget,Qt,parent,waiter,MyButton,按钮,include 来源: https://blog.csdn.net/qq_50997670/article/details/122557440
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。