【发布时间】:2018-08-30 08:02:23
【问题描述】:
我想在mainwindow 和reader 两个类之间实现信号和槽。
在reader 类中,我声明了信号SetProgress:
reader.h
class reader :public QObject
{
Q_OBJECT
signals:
void SetProgress(QString sOperation, int nPercentage);
}
reader.cpp
void reader::UpdateProgress(double amount)
{
int nPrecentage = (100 * amount / (max- min));
emit SetProgress(m_sCurrentOperation, nPrecentage);
}
主窗口.h
public:
reader *MyReader
private slots:
void SlotDisplayProgress(QString sActivity_i, int ProgressPercentage_i);
主窗口.cpp
void mainwindow :: SlotDisplayProgress(QString sActivity_i, int nProgressPercentage_i)
{
this->ui->QprogressBar->setValue(nProgressPercentage_i);
}
在 Mainwidow.cpp 我将声明信号和槽
MyReader = reader::New();
connect ( MyReader, &reader::SetProgress, this, &mainwindow::SlotDisplayProgress );
我尝试调试,直到emit 部分都正常工作。但是,slot 永远不会执行。
【问题讨论】:
-
什么异常?
-
在 mainwindow.exe 中的 0x00007FFE1A48063A (Qt5Cored.dll) 处引发异常:0xC0000005:访问冲突读取位置 0xFFFFFFFFFFFFFFFF。
-
好像
MyReader是一个无效的指针。 -
我将在 mainwindow.cpp (reader *MyReader) 中创建对象
-
您仍然必须为您的指针分配一个有效值。
reader *Myreader;没有为您的指针分配任何有效值。
标签: c++ qt signals-slots