QT新建弹窗设计

1.建立一个QWidget的项目;

2.文件->新建文件或项目->选C++->再选C++Class->choose->class name:输入名字,Base class:选QWidget,下一步->完成;(此时项目中新增.cpp和.h两个文件)

3、在.h文件中添加头文件,在public:中声明行编辑框和两个按钮;

QLineEdit *mNameLinEdit;

QPushButton *mSaveButton;

QPushButton *mCancelButton;

signals:

void sendNewName(QString name);//自定义信号,用于发送行编辑框中修改后的姓名。

private slots:

void  on_mSaveButton_clicked()//声明槽函数;

4.完善.cpp文件,添加网格布局器和空间间隔类的头文件;

QGridLayout *mainGridLayout = new GQridLayout();//创建网格布局管理器

QSpacerItem *verticalSpacer = new QSpacerItem(40,20);//创建空间间隔;

mNameLinEdit = new QLineEdit();  //实例化 mNameLinEdit

mSaveButton  = new QPushButton("保存");//实例化mSaveButton,并将文本设置“”“保存”

mCancelButton = new QPushButtom("取消");

mainGridLayout->addwidget(mNameLineEdit,0,0,1,2);
mainGridLayout->addItem(verticalSpacer,1,0,1,2);
mainGridLayout->addwidget(mSaveButton,2,0,1,1);
mainGridLayout->addwidget(mCancelButton,2,1,1,1);

connect(mSaveButton,SIGNAL(clicked()),this,SLOT(on_mSaveButton_clicked()));
connect(mSaveButton,SIGNAL(clicked()),this,SLOT(close()));
connect(mCancelButton,SIGNAL(clicked()),this,SLOT(close()));
setLayout(mainGridLayout);


void NameModify::on_mSaveButton_clicked() // 定义槽函数on_mSaveButton_clicked()

{
    emit(sendNewName(mNameLineEdit->text())); // 发送一个信号,携带文本输入框中的文本作为参数
}

5.声明标签,定义QString类变量;声明槽函数;

public:

QLabel *mNameTextLabel;

QString mNewName;

private slots:

void on_modifyButton_clicked();//修改按钮clicked()的槽函数;

void get NewName(QString name);//sendNewName(QString mNewName)的槽函数;

6.实例化mNameTextLabel,实例化三个按钮,将信号与槽函数关联;将对象添加如布局器中;设置当前窗口布局;

mNameTextLabel = new QLabel("姓名:");

mNameEditLabel = new QLabel("小李");

QPushButton *modifyButton = new QPushButton("修改");

modifyButton->setMaximmSize(70,25);

QPushButton *okButton = new QPushButton("确定");

QPushButton *quitButton = new QPushButton("退出");

connect(modifyButton,SIGNAL(clicked()),this,SLOT(on_modifyButton_clicked()));

connect(okButton,SIGNAL(clicked()),this,SLOT(close()));

connect(quitButton,SIGNAL(clicked()),this,SLOT(close())); 

labelHBoxLayout->addWidget(mNameTextLabel); // 添加姓名标签到水平布局

labelHBoxLayout->addWidget(mNameEditLabel, Qt::AlignLeft); // 添加姓名编辑标签到水平布局,左对齐    
labelHBoxLayout->addWidget(modifyButton); // 添加修改按钮到水平布局   
buttonHBoxLayout->addWidget(okButton); // 添加确定按钮到水平布局    

// 将水平布局添加到垂直布局中    
mainVBoxLayout->addLayout(labelHBoxLayout); // 添加标签水平布局到垂直布局    mainVBoxLayout->addLayout(buttonHBoxLayout); // 添加按钮水平布局到垂直布局    

setMaximumSize(250, 200);  // 设置窗口的最大尺寸      
setLayout(mainVBoxLayout);// 设置窗口的主布局为垂直布局

7.在on_modifyButton_clicked()槽函数中创建一个NameModify对象,并实例化,将NameModify的sendNewName(QString )信号关联get NewName(QString )槽函数;

将弹窗行编辑框mNameLineEdit的初始文本设置为当前主界面中mNameEditLabel文本,并显示弹窗。

// 当点击修改按钮时调用此槽函数
void Widget::on_modifyButton_clicked()
{
    NameModify *nameModify = new NameModify(); // 创建NameModify对象
    // 连接信号与槽:当NameModify发送新名字时,调用getNewName()槽函数接收新名字connect(nameModify, SIGNAL(sendNewName(QString)), this, SLOT(getNewName(QString)));    // 设置NameModify对象的文本框内容为当前姓名编辑标签的内容
    nameModify->mNameLineEdit->setText(mNameEditLabel->text());
    // 显示NameModify窗口
    nameModify->show();
}

关系图如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bmefeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值