• 6929阅读
  • 5回复

【提问】请教一下有关connect的问题 [复制链接]

上一主题 下一主题
离线sdr40725
 
只看楼主 倒序阅读 楼主  发表于: 2006-02-28
以下功能是用两个button在终端机下印出字串

/*ButtonWindow.h*/
#include<qmainwindow.h>

class ButtonWindow : public QMainWindow
{
  Q_OBJECT
 
public:
  ButtonWindow (QWidget *parent = 0 , const char *name=0);
  virtual ~ButtonWindow();
private slots:
  void Clicked();
  void Clicked2();
 
};


/*ButtonWindow.cpp*/
#include "ButtonWindow.h"
#include <qpushbutton.h>
#include <qapplication.h>
#include <iostream>

ButtonWindow::ButtonWindow(QWidget *parent , const char *name):QMainWindow(parent,name)
{
  this->setCaption("17-8..test"); //設定標題
  QPushButton *button = new QPushButton("click me!",this,"Button1");
  QPushButton *button2 = new QPushButton("hello",this,"Button2");
  //QPushButton的建構元 1.Button的文字 2..parent 3.name button是QPushButton指標
  button->setGeometry(20,50,90,30);
  button2->setGeometry(20,10,90,30);
  //button用來設定大小
  connect (button,SIGNAL(clicked()),this,SLOT(Clicked()));//連接信號
  connect (button2,SIGNAL(clicked()),this,SLOT(Clicked2()));//連接信號
 
}
ButtonWindow::~ButtonWindow() //呼叫解構元
{
}
void ButtonWindow::Clicked(void) //接收到信號時要做的動做
{
  std::cout<<"clicked!\n";
}

void ButtonWindow::Clicked2(void) //接收到信號時要做的動做
{
  std::cout<<"hello!!\n";
}


int main(int argc, char **argv)
{
  QApplication app(argc,argv);
  ButtonWindow *window = new ButtonWindow();
  //宣告一個 類別指標 *window 指向 ButtonWindow()
 
  app.setMainWidget(window);
  window->show();
 
  return app.exec();
}



想请教各位,为什么在button2的connect的信号函数一定要设为SIGNAL(clicked())
不能设成SIGNAL(clicked2()),还有程式中并没有设定signals,那又是怎么做signals/slot的功能呢?!



麻烦老大们多指教,初学问多多..
离线XChinux

只看该作者 1楼 发表于: 2006-02-28
connect (button,SIGNAL(clicked()),this,SLOT(Clicked()));//連接信號
你要明白,SIGNAL里的信号是第一个参数button的信号,而SLOT里的槽是第三个参数this里的槽
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线xuxinshao

只看该作者 2楼 发表于: 2006-02-28
你可以先看看Qt的singal/slot有关的内容

connect (button,SIGNAL(clicked()),this,SLOT(Clicked()));//連接信號
connect (button2,SIGNAL(clicked()),this,SLOT(Clicked2()));//連接信號
clicked()是一个QPushButton预定义的信号,由于没有添加自定义的信号,所以也就没有必要出现signals;Clicked()和 Clicked2()是我们自定义的两个槽函数
离线XChinux

只看该作者 3楼 发表于: 2006-02-28
那这句话是什么意思?clicked2()是槽,不是信号,当然不能放到 SIGNAL(clicked2())里了
想请教各位,为什么在button2的connect的信号函数一定要设为SIGNAL(clicked())
不能设成SIGNAL(clicked2()),还有程式中并没有设定signals,那又是怎么做signals/slot的功能呢?!
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线sdr40725
只看该作者 4楼 发表于: 2006-02-28
多谢两位大哥解惑,小弟明白了..谢谢
离线weilong122

只看该作者 5楼 发表于: 2006-04-18
弱若的问一下
实现这要先设计版面吗/
既要新建一个Form吗
在上面放两个按钮吗?
快速回复
限100 字节
 
上一个 下一个