• 3053阅读
  • 3回复

[提问]界面组件的引用问题 [复制链接]

上一主题 下一主题
离线zxwmail
 

只看楼主 倒序阅读 楼主  发表于: 2014-02-18
请问如何在main.cpp里connect界面里的pushbutton?
qt creater下自动生成一个dilog类程序,在ui里加入一个pushbutton,想在main.cpp加入信号槽对应:
#include "dialog.h"
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Dialog w;
    QObject::connect(ui->pushButton,SIGNAL(clicked()),w,SLOT(close()));
//但是ui没有这个类成员,请教上句如何写才正确?
    w.show();
    return a.exec();
}


离线noidea

只看该作者 1楼 发表于: 2014-02-18
代码中得ui是属于你的Dialog的,参见如下代码

  1. #include "Dialog.h"
  2. #include "ui_Dialog.h"
  3. Dialog::Dialog(QWidget *parent) :
  4.     QDialog(parent),
  5.     ui(new Ui::Dialog)
  6. {
  7.     ui->setupUi(this);
  8.     connect(ui->pushButton,SIGNAL(clicked()),w,SLOT(close()));
  9. }
  10. Dialog::~Dialog()
  11. {
  12.     delete ui;
  13. }
talk in code
Qt5.2.1 + MacOSX10.9
离线zxwmail

只看该作者 2楼 发表于: 2014-02-18
感谢您的回答,但是如果是在main里该如何调用?
用findchinldren函数可以找到名称为pushbutton的组件,然后建立关联,
只是这样很繁琐,应该有更好的方法。。
离线noidea

只看该作者 3楼 发表于: 2014-02-19
参见代码
  1. #include <QApplication>
  2. #include <QDialog>
  3. #include <QPushButton>
  4. int main(int argc, char *argv[])
  5. {
  6.     QApplication a(argc, argv);
  7.     QDialog dialog;
  8.     QPushButton * button = new QPushButton(&dialog);
  9.     QObject::connect(button, SIGNAL(clicked()), &dialog, SLOT(close()));
  10.     dialog.show();
  11.     return a.exec();
  12. }
talk in code
Qt5.2.1 + MacOSX10.9
快速回复
限100 字节
 
上一个 下一个