C#调用qt编写的dll问题,信号与槽函数无法使用

Winston_G 2020-10-15 08:07:58
使用Qt生成动态链接库dll 文件,不带界面。
使用过程中自定义了一个类,类中含有connet。具体代码如下:
类的定义:
class testTimer : public QObject
{
Q_OBJECT
public:
explicit testTimer(QObject* parent = nullptr);
QTimer *testtimer = new QTimer();
int value1 = 0;
QMetaObject::Connection flag;
private slots:
void calTest();
};

类的声明:
testTimer::testTimer(QObject *parent) : QObject(parent)
{
flag = connect(testtimer,&QTimer::timeout,[=]()
{
value1= value1+1;
}
);

testtimer->start(1000);
}

void testTimer::calTest()
{
value1 = value1+1;
}

类的使用 两个使用方法
方法一:直接在main中
testTimer *test11 = new testTimer(); //使用该类定义了一个函数

extern "C" __declspec(dllexport) int start(); // dll
int start()
{
return test11->value1; //返回value1的值
}

方法二:借用别人写的在C#中显示界面的类

在界面中调用类

testTimer *currenttest = new testTimer();//定义


void MainWindow::on_pushButton_2_clicked()
{
ui->doubleSpinBox->setValue(currenttest->value1);
}//界面里的一个按钮,点击按钮弹出数值

在C#中,点击一个按钮1,弹出一个Qt编写的界面
点击按钮2 ,弹出函数value1值的一个界面

结果是 按钮1 的界面 中点击on_pushButton_2,此时的value1值一直在变化,符合预期
点击按钮2 弹出的value1的值一直是0。

有人知道什么原因么?是我没有少添加了什么东西么?
...全文
14903 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly4free 2020-10-23
  • 打赏
  • 举报
回复
你在.net工程下,借用别人的Qt对话框dll————那就看看这个对话框工程咋写的呗

另外你的描述理解起来有点乱
翅膀又硬了 2020-10-22
  • 打赏
  • 举报
回复
你不用Qt的界面,还使用Qt图个啥。非Qt程序调用Qt的动态库,需要自己创建一个 QApplication。就像你Qt程序的main函数那样
Winston_G 2020-10-15
  • 打赏
  • 举报
回复
图片是最终的结果,可以看出直接调用自定义的类,读取value1的值,value1的值不变。
但是我在界面中调用自定义的类,然后读取value1的值,value1的值是变化的。
Winston_G 2020-10-15
  • 打赏
  • 举报
回复

16,818

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧