- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我似乎需要 QObject 类型的 p 实例,我已经扩展了 QObject 并在 fileprocessor.h 中定义了关键字 Q_OBJECT,我不确定我还能做什么。
-文件处理器.h
#ifndef FILEPROCESSOR_H
#define FILEPROCESSOR_H
#include <QMainWindow>
#include <QFile>
#include <QFileDialog>
#include <QTextStream>
#include <QStandardItemModel>
#include <QObject>
class fileProcessor: public QObject
{
Q_OBJECT
public:
fileProcessor();
public slots:
void on_action_Open_triggered();
void checkString(QString &temp, QChar ch = 0);
public:
QList<QStringList> csv;
QStandardItemModel *model;
QList<QStandardItem*> standardItemList;
};
#endif // FILEPROCESSOR_H
-主窗口.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "fileProcessor.h"
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{
fileProcessor p;
ui->setupUi(this);
QObject::connect(ui->Open, SIGNAL(clicked()),
p,SLOT(on_action_Open_triggered()));
}
MainWindow::~MainWindow()
{
delete ui;
}
-主窗口.cpp
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFile>
#include <QFileDialog>
#include <QTextStream>
#include <QStandardItemModel>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
错误:
C:\Qt\Qt5.3.2\Tools\QtCreator\bin\Assignment3\mainwindow.cpp:10: error: C2664: 'QMetaObject::Connection QObject::connect(const QObject *,const char *,const char *,Qt::ConnectionType) const' : cannot convert argument 3 from 'fileProcessor' to 'const QObject *' No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
最佳答案
编译器对这一行的意义
cannot convert argument 3 from 'fileProcessor' to 'const QObject *'
是您传递的是对象而不是对象的指针。
所以您需要做的就是使用 & 符号来获取指向 p 的指针,就像这样,对吧?
fileProcessor p;
ui->setupUi(this);
QObject::connect(ui->Open, SIGNAL(clicked()),
&p,SLOT(on_action_Open_triggered()));
它会编译,但不会工作。
为什么?您的变量 p 将超出范围并在构造函数结束时被销毁,因此永远不会调用它的插槽。
最直接的解决方案是将 p 声明为 MainWindow 类的成员变量。这样,只要其 MainWindow 存在,您的 fileProcessor 就会存在。
关于c++ - QObject::connection(const QObject*, const char*, const char*, Qt::ConnectionType) "Cannot convert argument 3 from ' fileProcessor' to const QObject *",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26771047/
我似乎需要 QObject 类型的 p 实例,我已经扩展了 QObject 并在 fileprocessor.h 中定义了关键字 Q_OBJECT,我不确定我还能做什么。 -文件处理器.h #ifnd
我是一名优秀的程序员,十分优秀!