c++ - 没有这样的插槽 QProgressBar::setValue(const int)

标签 c++ qt

我的代码中有这一行:

    QObject::connect(scanning_worker, SIGNAL(update_progress_bar(const int)), ui.progress_bar, SLOT(setValue(const int)));

在运行时我得到这个错误:

    No such slot QProgressBar::setValue(const int)

有什么想法吗? 在文档 QT 4.8(我使用的)中,setValuepublic slot...

我试过这个:我删除了参数中 int 之前的 const,但没有任何变化。我尝试用调试器调用其他槽,发现我在这个槽中的断点,所以没问题。我还尝试将“50”设置为 setValue 的参数

    QObject::connect(scanning_worker, SIGNAL(update_progress_bar(const int)), ui.progress_bar, SLOT(setValue(50)));

还是一样的错误...

我的类(class):

    class Scanning_worker : public QObject{
        Q_OBJECT
    private:
        int shots_count;
    public:
        Scanning_worker(const int shots) : shots_count(shots){}
        ~Scanning_worker(){}
    public slots:
        void do_work();
    signals:
        void error(const int err_num);
        void update_progress_bar(int value);
        void finished();
    };

并且 ui.progress_bar 处于形式(主窗口的子级)...

我在 visual studio 2010、W7 prof 和 QT 4.8 工作

最佳答案

插槽需要一个 int:而您给它一个 const int,因此会出现错误。将 SLOT(setValue(const int)) 更改为 SLOT(setValue(int)) 是不够的。你需要改变你的信号,所以它有一个 int 参数,而不是 `const int' 也是:

QObject::connect(scanning_worker, SIGNAL(update_progress_bar(int)), ui.progress_bar, SLOT(setValue(int)));

基本上,您的信号应该始终具有与您的插槽完全相同的参数,否则它将无法工作。还有另一种将信号连接到槽的方法,如果你做错了什么,它会给你编译时错误。假设您有一个这样的类(class):

class Foo : public QObject {
    Q_OBJECT
public slots:
    void fooSlot(){ }
signals:
    void fooSignal(){ }
};
Foo *a = new Foo();

如果您使用 qt5,则不要像这样连接:

connect( a, SIGNAL(fooSignal()), a, SLOT(fooSlot()) );

你也可以这样连接:

connect(  a, &Foo::fooSignal, a, &Foo::fooSlot );

在这种情况下,如果你犯了一个错误,它会在编译过程中显示出来。它还具有较少的括号,因此更易于阅读 :P

关于c++ - 没有这样的插槽 QProgressBar::setValue(const int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18829304/

相关文章:

python - PySide 或 PyQt 的 QtSingleApplication

c++ - 程序没有按顺序通过构造函数,从而导致未初始化的变量

C++,在for()函数内将复数与普通 double 组合时出错

c++ - Fstream 正在耗尽我的生命

创建 pthread 时出现 C++ 段错误

c++ - 在 Qt 中将 T 的集合转换为 QVariant 的集合

c++ - 递归段错误

c++ - 需要 QSortFilterProxyModel mapToSource 和 mapFromSource 帮助

c++ - 在项目中使用 QT 单元测试 - 冲突的 main(...) 函数

python - PyQt - 检测哪个项目已更改