سؤال

أتلقى هذا الخطأ في كل مرة أقوم فيها ببناء الكود الخاص بي.أنا باستخدام كيو تي الخالق 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.ميغابايت تريد أن تفعل شيئا آخر ولكنني لا أعرف ماذا لأن المتغير الرئيسي غامض جدا=)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top