不懂你说的自己做dialog是什么意思。但是要完成你说的功能,用QDialog就行。
比如你的get()函数中(大致方法)
MyWidget::get()
{
QDialog *temp_dialog = new QDialog(this); //get()函数中的临时dialog,get函数结束时释放内存
//下面是定义临时dialog中的控件,自己添加控件并排版
QLineEdit *context = new QLineEdit(temp_dialog);
QPushButton *ok_button = new QPushButton("OK",temp_dialog);
QPushButton *cancel_button = new QPushButton("Cancel",temp_dialog);
///排版
QHBoxLayout *layout= new QHBoxLayout;
……
temp_dialog->setLayout(layout);
////按钮事件
connect(ok_button, SIGNAL(clicked()), temp_dialog, SLOT(accept()));
connect(cancel_button, SIGNAL(clicked()), temp_dialog, SLOT(reject()));
//然后执行temp_dialog,界面上就是你自己排版的临时dialog了
if(temp_dialog->exec() == QDialog::Accepted) //确定。响应Enter和ok_button
{
//这里可以取得dialog中各控件的属性,比如QLineEdit:
QString str = context->text(); //如果希望str能用于其他函数中,就定义str是成员变量。
}
if(temp_dialog->exec() == QDialog::Rejected) //取消。响应Esc和cancel_button
{……return;}
}