QT调用不同来源的功能

时间:2015-07-28 11:23:44

标签: c++ qt function public

在我的项目中,我创建了多个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)   没有对象。

我不相信我需要创建一个新课程,但我想我还是会尝试。

2 个答案:

答案 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);