272064949:其他功能没有问题的话, 有没有可能是qt的事件没有开启, 就是qt的main里的a.exec(), 因为你是用c#调用dll, 所以没有这几行代码。如果没有跨线程的话, 试试用c++11的方式使用看行不行,
connect(obj, &ojb::sig, [=](){
});
我定义了一个类,类里面有一个connect ,具体如下:
.h
class testTimer : public QObject
{
Q_OBJECT
public:
explicit testTimer(QObject* parent = nullptr);
QTimer *testtimer = new QTimer();
int value1 = 0;
private slots:
void calTest();
};
.cpp
testTimer::testTimer(
QObject *parent)
:
QObject(parent)
{
connect(
testtimer,&
QTimer::timeout,[=]()
{
value1=
value1+
1;
});
testtimer->start(
1000);
}
void testTimer::calTest()
{
value1 =
value1+
1;
}
我使用了两种方法调用 方法一 : 我生成dll文件中调用
testTimer *test11
=
new testTimer();
extern "C" __declspec(dllexport)
int connect1();
int connect1()
{
//qApp->exec(); return test11->
value1;
//return currentcon->on_connect();}
方法二 我使用了别人做的使C#调用的界面类
testTimer *
currenttest =
new testTimer();
ui->
doubleSpinBox->setValue(
currenttest->
value1);
结果是 第一种方法 结果一直为0,第二种方法 结果与预期符合,一直在变化