خطأ كيو تي الخالق (أي مباراة للمشغل =)
-
22-12-2019 - |
سؤال
أتلقى هذا الخطأ في كل مرة أقوم فيها ببناء الكود الخاص بي.أنا باستخدام كيو تي الخالق 3.1 ،(5.2.1 بناء)
خطأ:لا تطابق ل ' المشغل+ '(أنواع المعامل هي 'كسترينغليست' و ' كونست شار [2]')
هنا هو مقتطف من التعليمات البرمجية ، ونأمل أن تساعد (خط أستريكس هو حيث يتم تمييز الخطأ)
int main(int argc, char *argv[])
{
Shutdown = false;
QApplication a(argc, argv);
a.setApplicationName("aQtLow");
//Create default data paths if they don't exist
QDir Path;
**MainPath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation) + "/" + a.applicationName() + "Data";**
Path.setPath(MainPath);
المحلول
المشكلة هي أنك تحاول تسلسل كسترينغليست مع كسترينغس منذ
QStandardPaths::standardLocations(QStandardPaths::HomeLocation)
إرجاع أ QStringList
.
سوف تحتاج إلى غ العنصر الذي ترغب في إعادة استخدامه ، على سبيل المثال.باستخدام .first()
الطريقة.يمكنك كتابة هذا:
ماينباث = قستاندردباثس::ستاندردلوكاتيونس(قستاندردباثس::هوميلوكاتيون).أولا () + " / "+ أ. اسم التطبيق () + "/ البيانات";
لاحظ أنني أضفت للتو " / "مفقودا بين اسم التطبيق و" البيانات " لأنني أعتقد أنه سيكون أكثر منطقية للاستخدام ، ولكن لا تتردد في رفض هذا التعديل إذا كنت ترغب في ذلك.
ولكن نظرا لأنك تبدو مهتما بموقع دليل البيانات، أود أن أقترح استخدام التعداد المخصص من QStandardPaths
:
أو سيكون من الأفضل استخدام فقط:
كستانداردباثس:: داتالوكاتيون 9 بإرجاع موقع الدليل حيث يمكن تخزين بيانات التطبيق المستمر.يتم إلحاق اسم التطبيق إلى موقع الدليل الذي تم إرجاعه ل جينيريكداتالوكاتيون.
يمكنك كتابة هذا بعد ذلك:
QDir Path(QStandardPaths::standardLocations(QStandardPaths::DataLocation).first());
في الواقع ، إذا كنت ترغب في تجنب .first()
اتصل، ربما يمكنك استخدام موقع قابل للكتابة() الطريقة على النحو التالي:
QDir Path(QStandardPaths::writableLocation(QStandardPaths::DataLocation));
=====================================================
بدافع الفضول ، يمكن أن يكون هذا أيضا بديلا:
أو
على النحو التالي:
QDir Path = QDir::home();
Path.cd(a.applicationName() + "Data");
أو
QDir Path(QDir::homePath() + "/" + a.applicationName() + "/Data");
إذا لم يكن ذلك كافيا ، فهناك حتى بديل آخر:
QDir Path(QCoreApplication::applicationDirPath + "/Data");
نصائح أخرى
QstandardPaths :: StandardLocations إرجاع Qstringlist.يجب عليك استخدام QstringList :: الانضمام أو QStringList :: at أو استخدم foreach.ميغابايت تريد أن تفعل شيئا آخر ولكنني لا أعرف ماذا لأن المتغير الرئيسي غامض جدا=)