Qt 槽机制:public slots 和 private slots

来源:互联网 发布:淘宝点卡类宝贝发布 编辑:程序博客网 时间:2024/05/16 06:39

今天在写Qt图片浏览器的时候,遇到了一个问题,Qt的界面是对的,但是功能却怎么也实现不了(点击开始按钮,无法显示打开文件夹的对话框),开始以为是信号连接或者是函数写错了,检查了好久都不知道问题在哪发火抓狂,最后,对着书上的代码一行行研究,才发现问题在这个地方:

class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
public slots:    (//我最开始写的是private ,没声明是slots)
void selectDir();
void next();
void prev();


private :            (//这个地方写成了private slots)
void createActions();
void createMenus();
void createToolBars();
void iniCentralWidget();


private:
ImageWidget *imagewidget;


QMenu *FileMenu;
QToolBar *toolBar;


QAction *dirAct;
QAction *nextAct;
QAction *prevAct;


QDir imageDir;
QStringList imageList;
int index;
};
#endif


在把private 改成了private slots 之后,图片浏览器的功能就实现了。(囧尴尬


查了网上的资料(http://www.ibm.com/developerworks/cn/linux/guitoolkit/qt/signal-slot/)才发现其中的问题:

槽是普通的 C++ 成员函数,可以被正常调用,它们唯一的特殊性就是很多信号可以与其相关联。当与其关联的信号被发射时,这个槽就会被调用。槽可以有参数,但槽的参数不能有缺省值。

既然槽是普通的成员函数,因此与其它的函数一样,它们也有存取权限。槽的存取权限决定了谁能够与其相关联。同普通的 C++ 成员函数一样,槽函数也分为三种类型,即 public slots、private slots 和 protected slots。

  • public slots:在这个区内声明的槽意味着任何对象都可将信号与之相连接。这对于组件编程非常有用,你可以创建彼此互不了解的对象,将它们的信号与槽进行连接以便信息能够正确的传递。
  • protected slots:在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。这适用于那些槽,它们是类实现的一部分,但是其界面接口却面向外部。
  • private slots:在这个区内声明的槽意味着只有类自己可以将信号与之相连接。这适用于联系非常紧密的类。

槽也能够声明为虚函数,这也是非常有用的。

槽的声明也是在头文件中进行的。例如,下面声明了三个槽:

      public slots:  void mySlot();  void mySlot(int x);  void mySignalParam(int x,int y);



如果是槽函数的话一定要指明它是slots 否则用不了,而public private protected 这些跟C++一样

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 三岁宝宝心跳快怎么办 宝宝右心房稍大怎么办 胎儿右心房偏大怎么办 胎心监测波动小怎么办 怀孕6个月不想要了怎么办 高敏肌钙蛋白t高怎么办 龟头沟槽里长疙瘩怎么办 肝郁气滞的体质怎么办 手指甲长在肉里怎么办 甲床与指甲脱离怎么办 指甲往肉里面长怎么办 指甲和肉分离是怎么办 大脚趾指甲空了怎么办 脚趾甲长在肉里怎么办 脚趾甲又厚又硬怎么办 小孩子咳嗽有痰怎么办%3f 支气扩张咳血怎么办小 背部第8块脊椎疼怎么办 坐时间长了背疼怎么办 新生儿总哭怎么办吐奶 婴儿吃饱了还哭怎么办 宝宝喉咙哭哑了怎么办 婴儿哭哑了嗓子怎么办 婴儿胖子哭哑了怎么办 孩子声音哭哑了怎么办 喝咖啡手抖心慌怎么办 累了就心慌发抖怎么办 经常头晕心慌胸闷乏力怎么办 在末地迷路了怎么办 在森林里迷路了怎么办 电热宝充电不热怎么办 保温壶按钮坏了怎么办 热水壶盖子坏了怎么办 充电暖宝宝不热怎么办 刚怀孕孕酮低该怎么办 小三怀孕了该怎么办 15学生怀孕了该怎么办 学东西慢悟性差怎么办 欠债不还怎么办有欠条 欠了几百万我该怎么办 玄凤鹦鹉感冒了怎么办