رفتن به مطلب
مرجع رسمی سی‌پلاس‌پلاس ایران
  • 0
فانوس

استفاده از صفحه کلید مجازی در دستگاه اِمبِد


سوال

من از کیوت 5.9.1 برای دستگاه ارم دارم استفاده میکنم. نمونه کد basic که مال مثال کیوت هست روی برد من درست کار میکنه. منم خواستم چیزی شبیه اون بسازم

این کد ها را .pro اضافه کردم
QT +=qml quick 
CONFIG += c++11 

static { QT += svg QTPLUGIN += qtvirtualkeyboardplugin }
disable-desktop|android-embedded|!isEmpty(CROSS_COMPILE)|qnx 
# Additional import path used to resolve QML modules in Qt Creator's code model 

QML_IMPORT_PATH =/opt/rootfs-s5p4418/usr/local/Trolltech/Qt-5.9.1-nexell32/qml/QtQuick/Controls.2/Material QML_IMPORT_PATH =/opt/rootfs-s5p4418/usr/local/Trolltech/Qt-5.9.1-nexell32/qml/Qt/labs 
# Additional import path used to resolve QML modules just for Qt Quick Designer QML_DESIGNER_IMPORT_PATH =/opt/rootfs-s5p4418/usr/local/Trolltech/Qt-5.9.1-nexell32/qml/QtQuick/Controls.2/Material

و این کدها به صفحه ای که دارای ادیتور است تا بتوانم در ان تایپ کردم

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.VirtualKeyboard 2.2
import QtQuick.VirtualKeyboard.Settings 2.2

و این کد برای صفحه main.cpp

int main(int argc, char *argv[]) {

 qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); 

 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
 QGuiApplication app(argc, argv); 
 QQmlApplicationEngine engine;
 engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
 
if (engine.rootObjects().isEmpty())
 return -1; 

return app.exec(); }

اما نشون نمیده. کسی میدونه کجای کار اشکال داره؟

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

5 پاسخ به این سوال تا کنون داده شده است

پست های پیشنهاد شده

  • 0
در 41 دقیقه قبل، فانوس گفته است :

من از کیوت 5.9.1 برای دستگاه ارم دارم استفاده میکنم. نمونه کد basic که مال مثال کیوت هست روی برد من درست کار میکنه. منم خواستم چیزی شبیه اون بسازم

این کد ها را .pro اضاف کردم

QT +=qml quick 
CONFIG += c++11 

static { QT += svg QTPLUGIN += qtvirtualkeyboardplugin }
disable-desktop|android-embedded|!isEmpty(CROSS_COMPILE)|qnx 
# Additional import path used to resolve QML modules in Qt Creator's code model 

QML_IMPORT_PATH =/opt/rootfs-s5p4418/usr/local/Trolltech/Qt-5.9.1-nexell32/qml/QtQuick/Controls.2/Material QML_IMPORT_PATH =/opt/rootfs-s5p4418/usr/local/Trolltech/Qt-5.9.1-nexell32/qml/Qt/labs 
# Additional import path used to resolve QML modules just for Qt Quick Designer QML_DESIGNER_IMPORT_PATH =/opt/rootfs-s5p4418/usr/local/Trolltech/Qt-5.9.1-nexell32/qml/QtQuick/Controls.2/Material

و این کدها به صفحه ای که دارای ادیتور است تا بتوان در ان تایپ کردم


import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.VirtualKeyboard 2.2
import QtQuick.VirtualKeyboard.Settings 2.2

و این کد برای صفحه main.cpp


int main(int argc, char *argv[]) {

 qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); 

 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
 QGuiApplication app(argc, argv); 
 QQmlApplicationEngine engine;
 engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
 
if (engine.rootObjects().isEmpty())
 return -1; 

return app.exec(); }

اما نشون نمیده. کسی میدونه کجای کار اشکال داره؟

این مثال رو آزمایش کنید. باید رویداد‌های نمایشی صفحه کلید در سمت کیو‌ام‌ال هم به درستی تنظیم بشه، در صورتی که جواب نداد مشکل مربوط به نسخهٔ Qt خواهد بود. چون این ویژگی صفحه کلید مجازی در نسخهٔ تجاری فعال هست که از نسخه‌های اخیر آزاد شده.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در هم اکنون، کامبیز اسدزاده گفته است :

این مثال رو آزمایش کنید. در صورتی که جواب نداد مشکل مربوط به نسخهٔ Qt خواهد بود. چون این ویژگی صفحه کلید مجازی در نسخهٔ تجاری فعال هست که از نسخه ۵.۱۰ به اینور هم آزاد شده.

سلام. این مثال روی دستگاه داره کار میکنه . من این تکه کد ها را از همین مثال کپی کردم. درست کار میکنه . اما کدی که من کپی کردم کار نمیکنه. میخواستم بدونم چه چیزهایی را دیگه باید کپی کنم تا کار کنه.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در 9 دقیقه قبل، فانوس گفته است :

سلام. این مثال روی دستگاه داره کار میکنه . من این تکه کد ها را از همین مثال کپی کردم. درست کار میکنه . اما کدی که من کپی کردم کار نمیکنه. میخواستم بدونم چه چیزهایی را دیگه باید کپی کنم تا کار کنه.

خب از کد‌های سمت QML شما بی خبر هستیم و احتمال این هستش که در این بخش مشکلی وجود داشته باشه. طبق مثالی که زده شده باید رویداد‌های کلیدی (اکشن)‌ ها هم به درستی برای فیلد متن مشخص بشه جزئیات رو مطابق مثال بررسی کنید.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در در 6 شهریور 1397 در 17:22، کامبیز اسدزاده گفته است :

خب از کد‌های سمت QML شما بی خبر هستیم و احتمال این هستش که در این بخش مشکلی وجود داشته باشه. طبق مثالی که زده شده باید رویداد‌های کلیدی (اکشن)‌ ها هم به درستی برای فیلد متن مشخص بشه جزئیات رو مطابق مثال بررسی کنید.

سلام. طبق جست و جویی که کردم با اضاف کردن این لینک به .pro 

static { QT += svg QTPLUGIN += qtvirtualkeyboardplugin }

و این کد به فایل

int main(int argc, char *argv[]) {

 qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); 
 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
 QGuiApplication app(argc, argv);
 QQmlApplicationEngine engine;
 engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
 if (engine.rootObjects().isEmpty())
 return -1; return app.exec(); 

}

در فایل اصلی هم این کد را نوشتم اما کار نمیکنه وقتی روی تکسم کلیل میکنم. البته روی دیوایس لمسی

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.VirtualKeyboard 2.1

Window {

 visible: true width: 640 height: 480
 TextInput { id: textInput;
 text:"ssssss"
 height: 120;
 width: parent.width - 2;
 anchors.bottom: keyboard.top 
 color: "#000000"; // black 
 // http://doc.qt.io/qt-5/qinputmethod.html#
 properties focus: Qt.inputMethod.visible;
 verticalAlignment: TextInput.AlignVCenter; 

 } 

}

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
  • 0
در 22 ساعت قبل، فانوس گفته است :

سلام. طبق جست و جویی که کردم با اضاف کردن این لینک به .pro 


static { QT += svg QTPLUGIN += qtvirtualkeyboardplugin }

و این کد به فایل


int main(int argc, char *argv[]) {

 qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); 
 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
 QGuiApplication app(argc, argv);
 QQmlApplicationEngine engine;
 engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
 if (engine.rootObjects().isEmpty())
 return -1; return app.exec(); 

}

در فایل اصلی هم این کد را نوشتم اما کار نمیکنه وقتی روی تکسم کلیل میکنم. البته روی دیوایس لمسی


import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.VirtualKeyboard 2.1

Window {

 visible: true width: 640 height: 480
 TextInput { id: textInput;
 text:"ssssss"
 height: 120;
 width: parent.width - 2;
 anchors.bottom: keyboard.top 
 color: "#000000"; // black 
 // http://doc.qt.io/qt-5/qinputmethod.html#
 properties focus: Qt.inputMethod.visible;
 verticalAlignment: TextInput.AlignVCenter; 

 } 

}

حل شد.

InputPanel{ 

id:inputpanel visible:active 
y:active?parent.height - inputpanel.height : parent.height 
anchors.left: parent.left 
anchors.right: parent.right 

}

TextInput{ 

 id:input inputMethodHints: Qt.ImhDigitsOnly
 focus: Qt.inputMethod.visible; 
 text: "123211" 

} 

TextInput{ 

 id:input2
 anchors.top:input.bottom
 inputMethodHints: Qt.ImhLowercaseOnly
 focus: Qt.inputMethod.visible;
 text: "123211" 

}

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو ملحق شوید

شما همین الآن می‌توانید مطلبی را ارسال و بعداً ثبت‌نام کنید. اگر حساب کاربری دارید، و با حساب کاربری خود مطلب ارسال کنید.
نکته: مطلب شما قبل از انتشار نیاز به بازبینی توسط میانجی‌گر‌ها دارد.

مهمان
پاسخ به این سوال ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از ۷۵ اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • جدید...