QT调用函数在不同的源代码
QT calling functions in different sources
在我的项目中,我创建了多个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)没有对象。
我不相信我需要创建一个新类,但我想无论如何我都会尝试。
您需要创建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
不能使用test::format(...)
调用非静态成员函数
它必须绑定到一个对象(class
的实例)。例如,您可以这样做:
test testObject;
QString formattedString = testObject.format(strToFormat);
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 调用格林德 没有仅适用于几个函数的源代码
- 如何从 Android Studio 调用 c++ 源代码
- Kdbg pid() 调用源代码
- 在源代码中,调用函数时不带 ().文档给出了 1 个必需的参数
- 如何替换源代码或库中的__ieee754_exp_avx调用
- 如何从可从C++代码调用的 Ada 源代码构建静态库?
- 在混合源代码中生成调用树或抽象语法树
- 在 c++ 源代码中调用 g++
- 如何在源代码中查找所有非 Unicode 函数调用
- 源代码在c ++中调用错误的模板类函数,如何修复
- 为什么 c++ 源代码可以在没有外部"C"的情况下调用 c 代码?
- c++和VS2010-没有为任何调用堆栈帧加载符号.无法显示源代码
- 如何检查c++源代码中是否有任何系统/shell调用
- 显示 new() 在 malloc 返回的地址调用对象的构造函数的源代码
- 没有为任何调用堆栈帧加载符号.无法显示源代码
- QT调用函数在不同的源代码
- 从Java调用DLL,编辑DLL源代码
- 当查看内存转储的调用堆栈时,如何在VS中指定源代码目录