QMetaObject::invokeMethod()---------Qt 类外调用一个 private slots 函数
来源:互联网 发布:淘宝以前订单不见了 编辑:程序博客网 时间:2024/04/29 13:49
http://blog.csdn.net/zengcccc/article/details/7018230
MainWindow中 private slots 函数 void print_on_log(QString strtemp);输出一个字符串到编辑窗口中
class MainWindow:publicQMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void print_on_log(QString strtemp);
定义一个新类Test_one在此类中调用上面的私有槽该类定义为
class Test_one
{
public:
Test_one(QObject * fromMain)
{
this->fromMain=fromMain;
}
void run();
private:
QObject * fromMain;
};
void Test_one::run()
{
QString strTemp="类外调用print_on_log函数";
QMetaObject::invokeMethod(fromMain,"print_on_log",Qt::QueuedConnection, Q_ARG(QString,strTemp));
}
接下来就是该如何触发这个类的run函数,当然可以放在任何地方来触发了,本示例为了方便,就在MainWindow调用.
void MainWindow::on_pushButton_clicked()
{
Test_one *test=new Test_one(this);
test->run();
}
这样就实现了在类外调用private slots:函数了.
当然本例的调用方式有些变态.但是还是有在类外调用私有槽函数的可能.
还有一点需要注意:一些程序员认为使用了QMetaObject::invokeMethod()要比发送自定义事件好一些,因为它可以与Qt信号无缝对接,并且不需要创建创建自定义的QEvent子类或者是重新实现事件要发送到的窗口部件中的QWidget::event().实际上,线程之间的信号和槽是通过Qt的事件机制来实现的.
0 0
- QMetaObject::invokeMethod()---------Qt 类外调用一个 private slots 函数
- Qt 类外调用一个 private slots 函数
- Qt 类外调用一个 private slots 函数
- Qt public slots;protected slots;private slots
- QMetaObject::invokeMethod and Q_INVOKABLE
- Qt 槽机制:public slots 和 private slots
- Qt 槽机制:public slots 和 private slots
- QMetaObject之invokeMethod 点滴记录
- Qt多线程 信号和槽以及C++11的绑定 及QMetaObject::invokeMethod
- QMetaObject之invokeMethod说明和使用
- QMetaObject::invokeMethod: No such method的问题
- Qt 静态函数QMetaObject::connectSlotsByName(QObject * object)
- Qt--QMetaObject
- Private implementation slots
- 解读QT信号与槽机制里 QMetaObject::connectSlotsByName(QObject *o)的源码 介绍 connectSlotsByName 是一个QMetaObject类里的
- QMetaObject之invokeMethod 点滴记录(有时间在看看)
- Qt函数connectSlotsByName(),即"QMetaObject::connectSlotsByName(QObject *o)"的说明
- 【期待高手】C++类外调用“返回值为对象的函数”产生的“调用copy构造函数”的问题
- 创业CEO的十大责任:创造健康利润是王道
- VS2008+OpenCV2.3.1 应用程序程序无法正常启动
- 解码混淆过的堆栈跟踪信息
- Session的生命周期
- Oracle数据表被drop后的恢复
- QMetaObject::invokeMethod()---------Qt 类外调用一个 private slots 函数
- 错误提示 maven-enforcer-plugin is ignored by m2e 原因及处理办法
- 超越Web,Javascript在物联网的应用
- docker搭建基础的tomcat应用
- playframework设置dist版本的监听端口
- 服务窗代理优势
- 30个在线学习设计与开发的站点
- 如何快速得到真实的执行计划
- 怎样成为高级学习者?1:提问