• 4736阅读
  • 2回复

[提问]关于connectSlotsByName [复制链接]

上一主题 下一主题
离线3969636
 
只看楼主 倒序阅读 楼主  发表于: 2011-03-25
我在自动生成的窗口构造函数中创建一个button


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
           QPushButton *btn=new QPushButton(this);
            btn->setObjectName("TestButton");
            btn->setText("test");
            btn->setGeometry(50,70,100,150);
            qDebug(btn->objectName().toStdString().c_str());


            ui->setupUi(this);
}

MainWindow头文件中将on_TestButton_clicked声名为槽,实现文件中如下:

void MainWindow::on_TestButton_clicked()
{


        QObject *obj=sender();
       qDebug("TestButton is clicked by %s!\n",obj->objectName().toStdString().c_str());
  
        
}




执行的时候没有提示找不到对应的槽,说明信号和槽已经通过setupUi中的connectSlotsByName链接上了,但是点击按钮发现没有执行on_TestButton_clicked函数,并且界面上的按钮点不点一个样,没有回弹,就是一个按钮形状的背景,请问这是什么情况?

[ 此帖被3969636在2011-03-25 15:08重新编辑 ]
离线jdwx

只看该作者 1楼 发表于: 2011-03-25
你的按钮是在构造函数里定义的,是个局部变量。
应该在头文件里定义。
再说都用UI了,就在上面画个按钮吧。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线3969636
只看该作者 2楼 发表于: 2011-03-25
btn是new生成的,局部不局部没什么吧,不delete又不会消失
快速回复
限100 字节
 
上一个 下一个