在我的项目中,我创建了多个gui页面。在辅助源(secondary.cpp)中,我想调用在mainwindow.cpp
中声明的函数。我真的不确定怎么做。
我试图在公共区域宣布该功能,如:
QString format (QString number);
mainwindow.cpp
中的定义如下:
QString MainWindow::format(QString number)
{
...
}
然后我在我的辅助来源(#include "mainwindow.h"
)中加入secondary.cpp
并使用lower = format(upper);
调用该函数,但我收到错误消息:
格式未在此范围内声明。
我也试过通过
来调用它lower = MainWindow::format(upper);
给了我错误信息
无法调用成员函数QString MainWindown :: format(Qstring) 没有对象。
最后,我还尝试在mainwindow.h
class test : public QString
{
public:
QString format (QString number);
};
QString test::format(QString number)
mainwindow.cpp
通过lower = test::format(upper);
调用该功能
这给了我错误:
无法调用成员函数QString MainWindown :: format(QString) 没有对象。
我不相信我需要创建一个新课程,但我想我还是会尝试。
答案 0 :(得分:2)
您需要创建MainWindow
类的对象,然后调用函数:
MainWindow *w = new MainWindow;
QString lower = w->format(upper);
或者另一种解决方案是类的静态函数。这样你就没有必要的类创建对象,可以按名称调用方法:
QString lower = MainWindow::format(upper);
当然,您需要添加#include "mainwindow.h"
标题。
但你应该知道MainWindow
类不是存储形成字符串函数的最佳位置,你可以使用QString
类函数,如QString::toUpper()
或QString::toLower()
或创建你的自己的格式化课程:
class myFormatingStringClass {
QString toLower(QString str);
static QStrin toUpper(QString str);
}
正如我上面所说的那样,您需要创建myFormatingStringClass
对象以使用myFormatingStringClass::toLower()
函数或使用静态方法:
QString upper = QString("Hello World");
myFormatingStringClass formating;
QString lower = formatin.toLower(upper); // Using class method of existing object
QString upper = myFormatingStringClass::toUpper(lower); // Using static method
答案 1 :(得分:1)
您无法test::format(...)
调用非静态成员函数。
必须绑定到一个对象(class
的一个实例)。例如,您可以这样做:
test testObject;
QString formattedString = testObject.format(strToFormat);