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++一样
- Qt 槽机制:public slots 和 private slots
- Qt 槽机制:public slots 和 private slots
- Qt public slots;protected slots;private slots
- QT的信号和槽机制:Signals and Slots
- QT中connect连接信号signals和槽slots机制
- private public protected slots的区别
- Qt 定义信号 signals 和 槽 slots
- Private implementation slots
- Qt之信号signals和槽slots详解
- 信号(signals)和槽(slots)
- 信号(signals)和槽(slots)
- 信号(signals)和槽(slots)
- qt 的 signals宏和slots宏
- QT之emit,signals和slots
- Qt 类外调用一个 private slots 函数
- QMetaObject::invokeMethod()---------Qt 类外调用一个 private slots 函数
- Qt 类外调用一个 private slots 函数
- QT signal / slots 注意事项
- css 命名规范
- idea搭建SSM框架遇到的问题
- linux数据盘,系统盘
- W32汇编窗口程序
- 故障案例--mongodb writeconcern为majority时的又一个bug
- Qt 槽机制:public slots 和 private slots
- 反向传播网络(BP 网络)
- nginx基本配置与参数说明
- Remove Nth Node From End of List
- Oracle 查询及高级查询
- 用 document.readyState == "complete" 判断页面是否加载完成
- maxnewsize不轻易加
- Paxos-->Fast Paxos-->Zookeeper分析
- 2017/4/14 我是否应重拾Java