رفتن به مطلب
جامعه‌ی برنامه‌نویسان مُدرن ایران

فانوس

کاربـــر عـــــادی
  • تعداد ارسال ها

    13
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    1

آخرین بار برد فانوس در 16 آبان

فانوس یکی از رکورد داران بیشترین تعداد پسند مطالب است !

اعتبار در سایت

2 خوب

درباره فانوس

توسعه‌ دهنده بَک اِند
کاربـــر عـــــادی
  • تاریخ تولد تعیین نشده

اطلاعات شبکه‌ای

موقعیت

  • شهر
    شیراز

آخرین بازدید کنندگان نمایه

194 بازدید کننده نمایه
  1. فانوس

    چون منظورم را متوجه نشدید عرض میکنم. یعنی گل بود و به سبزه نیز آراسته شد. یعنی مونده گوگل هم تحریممون کنه (که به نفعشه که نمیکنه) بنده منظورم جمله تناقض دار هست. مثل اینکه بد متوجه شدید دوست من.
  2. فانوس

    سلام مشکل عدم نمایش حل شد. مشکلش این بود که وقتی می خواست کویری را اجرا کنه دیتابیس را پیدا نمیکرد چون دیتابیسم پیش فرض سیستم نیود . با ارسال دیتابیس مشکل اولم حل شد . مشکل دومم اینه که دیتا را میاره توی QDebug نمایش میده اما تو لیست ویو به فیلدهای جدولم دسترسی ندارم اصلا. هیچ خطایی نشون نمیده اینم کد مدل که هدر و سورس با هم هستند: از روی این لینک کار کردم #ifndef MYMODEL_H #define MYMODEL_H #include <QSqlQueryModel> #include <QSqlRecord> #include <QSqlField> #include "db.h" class MyModel : public QSqlQueryModel { Q_OBJECT public: explicit MyModel(QObject *parent = nullptr); QStringList userRoleNames() const { QStringList names; for (int i = 0; i < record().count(); i ++) { names << record().fieldName(i).toUtf8(); } return names; } //my function void setQuerystr(const QString &query); QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QHash<int , QByteArray>roleNames() const override{ return m_roleNames; } public: void generateRoleNames(); QHash<int , QByteArray> m_roleNames; DB db; }; #endif // MYMODEL_H ==============================================================================================// #include "mymodel.h" MyModel::MyModel(QObject *parent) : QSqlQueryModel(parent) { } void MyModel::setQuerystr(const QString &query) { QSqlQueryModel::setQuery(query,QSqlDatabase::database("MainDB")); generateRoleNames(); } QVariant MyModel::data(const QModelIndex &index, int role) const { // QVariant value; // if (role<Qt::UserRole) { // value = QSqlQueryModel::data(index,role); // } // else // { // int columnIdx = role - Qt::UserRole -1; // QModelIndex modelindex = this->index(index.row(),columnIdx); // value = QSqlQueryModel ::data(modelindex,Qt::DisplayRole); // } // QVariant value; if (index.isValid()) { if (role < Qt::UserRole) { value = QSqlQueryModel::data(index, role); } else { int columnIdx = role - Qt::UserRole - 1; QModelIndex modelIndex = this->index(index.row(), columnIdx); value = QSqlQueryModel::data(modelIndex, Qt::DisplayRole); } } return value; } //QHash<int, QByteArray> MyModel::roleNames() const //{ // return m_roleNames; //} void MyModel::generateRoleNames() { m_roleNames.clear(); // for (int i = 0; i < record().count(); ++i) // { // m_roleNames.insert(Qt::UserRole+1,record().fieldName(i).toUtf8()); // } for (int i = 0; i < this->record().count(); i ++) { m_roleNames.insert(Qt::UserRole + i + 1, record().fieldName(i).toUtf8()); } } اینم کد qml: import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.3 import QtQuick.Controls 2.2 import QtQuick.Controls.Material 2.2 import QtQuick.VirtualKeyboard 2.1 import io.myqt.UserManage 1.0 import MyModel 1.0 CustomeBackground { id:mngusr property StackView view UserManage{id:um} Component.onCompleted: myModel.updateModel(); MyModel{id:myModel} MyButton { id:btnclose height: 45 anchors.left: parent.left anchors.leftMargin: 575 anchors.top: parent.top anchors.topMargin: 0 txt: qsTr("X") fontsize: 20 anchors.right: parent.right anchors.bottom: swipeView.top onClicked: { if(view.depth==1) { mngusr.view.pop(); view.visible=false; } else mngusr.view.pop(); } } Pane{ id: pane width: 400 height: 400 anchors.right: parent.right anchors.rightMargin: 2 anchors.left: parent.left anchors.leftMargin: 2 anchors.bottom: parent.bottom anchors.bottomMargin: 317 anchors.top: btnclose.bottom anchors.topMargin: 0 RowLayout { x: -12 y: 0 width: 716 height: 76 MyLable { id:lbl Layout.preferredHeight: 30 Layout.preferredWidth: 100 Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter // anchors.rightMargin: 2 txt : qsTr(" Personel ID :") } MyTextField{ id:mytxt Layout.preferredHeight: 40 Layout.preferredWidth: 70 clip: true Layout.maximumHeight: 40 Layout.maximumWidth: 200 hint: qsTr("Insert the personel id for search...") } MyButton{ id:btnsearch txt:qsTr("SEARCH") onClicked: { if(mytxt.text.length===0) um.fillTableView(-1); else um.fillTableView(mytxt.text); mylistView.model=myModel; } } } } Frame{ x: 21 y: 162 ListView{ id:mylistView implicitHeight: 250 implicitWidth: 250 model: myModel resources:{ var roleList = myModel.userRoleNames var temp = [] for(var i in roleList){ var role = roleList[i] temp.push(columnComponent.createObject(view, { "role": role, "title": role})) } return temp } // delegate: RowLayout{ // width: parent.width // TextField { // //Layout.width: 100 // id: name // text: card // } // } } } } چجوری خروجی کویری را در لیست ویو نمایش بدم هیچ خطایی ندارم فقط چیزی تو لیست ویو لود نمیشه اصلا
  3. فانوس

    دیتای من اینه : QSqlQuery DB::UserManage(int id)  { QString str; str.append("SELECT ui.[UI_ID],ui.[UI_PID],ui.[UI_Admin],ui.[UI_Active]," "case when(select count(*) FROM t1 ua where ua. [UI_ID]=ui.[UI_ID] and [AT_ID]=1 and [UA_Active]=1)>0 then 1 else 0 end," "case when(select count(*) FROM t2 ua where ua.[UI_ID]=ui.[UI_ID] and [AT_ID]=2 and [UA_Active]=1)>0 then 1 else 0 end," "case when(select count(*) FROM t3 ua where ua.[UI_ID]=ui.[UI_ID] and [AT_ID]=3 and [UA_Active]=1)>0 then 1 else 0 end " "FROM t4 ui "); /*WHERE ui.[UI_Active]=1*/ if(id>-1) { str.append(" where ui.[UI_ID]=");/*and ui.[UI_ID]=*/ str.append(QString::number(id)); } return q; } این نهایت خروجیش میتونه بشه QSqlQueryModel حالا من اینو چجوری بفرستم که تبدیل شه به جیسون بعد تبدیل بتونه تو لیست ویو نشون بده . مثلا تو لینک زیر دیتاش کلا جیسونه JSONListModel - Qt Wiki دیتا من چجوری باید تبدیل شه. کلا من اینو از پایه متوجه نشدم چرا QML این مبحث دیتا رو پیچیده کرده.
  4. فانوس

    سلام. ممنون از راهنماییتون . اینی که گفتی فهمیدم . اما در کل هنوز بلد نیستم ازش استفاده کنم. ممنون به هر حال
  5. فانوس

    بله .خیلی هم خوب .
  6. سلام. من میخوام محتویات دیتابیسم را نمایش بدم تو لیست ویو توسط کویری که در کلاس دیتابیسم ساخته میشه اما اصلا مدل منو تو کلاس usermanage.qml در لیست ویو نمیشناسه . MyModel.h: #include "mymodel.h" MyModel::MyModel(QObject *parent) : QSqlQueryModel(parent) { } void MyModel::setQuery(const QSqlQuery query) { QSqlQueryModel::setQuery(query); generateRoleNames(); } QVariant MyModel::data(const QModelIndex &index, int role) const { QVariant value; if (role<Qt::UserRole) { value = QSqlQueryModel::data(index,role); } else { int columnIdx = role - Qt::UserRole -1; QModelIndex modelindex = this->index(index.row(),columnIdx); value = QSqlQueryModel ::data(modelindex,Qt::DisplayRole); } return value; } //QHash<int, QByteArray> MyModel::roleNames() const //{ // return m_roleNames; //} void MyModel::generateRoleNames() { m_roleNames.clear(); for (int i = 0; i < record().count(); ++i) { m_roleNames.insert(Qt::UserRole+1,record().fieldName(i).toUtf8()); } } MyModel.cpp: #ifndef MYMODEL_H #define MYMODEL_H #include <QAbstractListModel> #include <QSqlRecord> #include <QSqlField> #include "db.h" class MyModel : public QSqlQueryModel { Q_OBJECT public: explicit MyModel(QObject *parent = nullptr); //my function void setQuery(const QSqlQuery query); QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QHash<int , QByteArray>roleNames() const override{ return m_roleNames; } private: void generateRoleNames(); QHash<int , QByteArray> m_roleNames; DB db; }; #endif // MYMODEL_H main.cpp: #include <QGuiApplication> #include <QQmlApplicationEngine> #include <QQuickStyle> int main(int argc, char *argv[]) { DB database; database.openConnection(); qmlRegisterType<MyModel>("Model", 1, 0, "myModel"); qmlRegisterType<MainWindow>("io.myqt.MainWindow", 1, 0, "MainWindow"); ... QQmlApplicationEngine engine; engine.load(QUrl(QLatin1String("qrc:/main.qml"))); if (engine.rootObjects().isEmpty()) return -1; return app.exec(); } usermanage.qml: import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.3 import QtQuick.Controls 2.2 import QtQuick.Controls.Material 2.2 import QtQuick.VirtualKeyboard 2.1 import io.myqt.UserManage 1.0 import Model 1.0 CustomeBackground { id:mngusr property StackView view UserManage{id:um} Component.onCompleted: myModel.updateModel(); MyButton { id:btnclose height: 45 anchors.left: parent.left anchors.leftMargin: 575 anchors.top: parent.top anchors.topMargin: 0 txt: qsTr("X") fontsize: 20 anchors.right: parent.right anchors.bottom: swipeView.top onClicked: { if(view.depth==1) { mngusr.view.pop(); view.visible=false; } else mngusr.view.pop(); } } Pane{ id: pane width: 400 height: 400 anchors.right: parent.right anchors.rightMargin: 2 anchors.left: parent.left anchors.leftMargin: 2 anchors.bottom: parent.bottom anchors.bottomMargin: 317 anchors.top: btnclose.bottom anchors.topMargin: 0 RowLayout { x: -12 y: 0 width: 716 height: 76 MyLable { id:lbl Layout.preferredHeight: 30 Layout.preferredWidth: 100 Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter // anchors.rightMargin: 2 txt : qsTr(" Personel ID :") } MyTextField{ id:mytxt Layout.preferredHeight: 40 Layout.preferredWidth: 70 clip: true Layout.maximumHeight: 40 Layout.maximumWidth: 200 hint: qsTr("Insert the personel id for search...") } MyButton{ id:btnsearch txt:qsTr("SEARCH") onClicked: { if(mytxt.text.length===0) um.fillTableView(-1); else um.fillTableView(mytxt.text); } } } } Frame{ x: 21 y: 162 ListView{ id:mylistView implicitHeight: 250 implicitWidth: 250 model: myModel delegate: RowLayout{ width: parent.width TextField { //Layout.width: 100 id: name text: UI_PID } } } } } usermanage.cpp: void UserManage::fillTableView(int id) { model.setQuery(db.UserManage(id)); } اینم کد دیتابیسم QSqlQuery DB::UserManage(int id) { QString str; str.append("SELECT ui.[UI_ID],ui.[UI_PID],ui.[UI_Admin],ui.[UI_Active]," "case when(select count(*) FROM t1 ua where ua. [UI_ID]=ui.[UI_ID] and [AT_ID]=1 and [UA_Active]=1)>0 then 1 else 0 end," "case when(select count(*) FROM t2 ua where ua.[UI_ID]=ui.[UI_ID] and [AT_ID]=2 and [UA_Active]=1)>0 then 1 else 0 end," "case when(select count(*) FROM t3 ua where ua.[UI_ID]=ui.[UI_ID] and [AT_ID]=3 and [UA_Active]=1)>0 then 1 else 0 end " "FROM t4 ui "); /*WHERE ui.[UI_Active]=1*/ if(id>-1) { str.append(" where ui.[UI_ID]=");/*and ui.[UI_ID]=*/ str.append(QString::number(id)); } return q; } من نمیدونم کجا اشتباه کردم. ممنون میشم کمکم کنید
  7. فانوس

    سلام. ممنون از راهنماییتون. اما هنوز چیزی دستگیرم نشده. میشه بیشتر راهنماییم کنین.
  8. سلام چندتا سوال داشتم در زمینه اتصال دیتابیس به پروژه کوئیک من تا اینجا متوجه شدم که برای اتصال دیتابیس ابتدا باید یک فایل مختص درج و حذف و ویرایش و اتصال دیتابیس درست کرد. و یک فایل برای مدل. اولی که مشکلی ندارم و کاملا واضحه میمونه دومی: QML - Lesson 016. SQLite database and the working with it in QML Qt ۱ - رول Role چه استفاده ای داره؟ نام هایی که انتخاب می‌کنه چه کاربردی داره؟ ۲ - هش برای چی هست؟ ۳ - تابعی که خروجی QVariant هست برای چی تعریف شده؟ ۴ - ایا به ازای تمامی جداولی که در دیتابیس است باید رول تعریف شه؟ ۵ - زمانیکه چندین جدول داریم چجوری این فایل مدل باید تعریف بشه. ممنون میشم برام ساده توضیح بدید.
  9. فانوس

    حل شد. 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" }
  10. فانوس

    سلام. طبق جست و جویی که کردم با اضاف کردن این لینک به .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; } }
  11. فانوس

    سلام. این مثال روی دستگاه داره کار میکنه . من این تکه کد ها را از همین مثال کپی کردم. درست کار میکنه . اما کدی که من کپی کردم کار نمیکنه. میخواستم بدونم چه چیزهایی را دیگه باید کپی کنم تا کار کنه.
  12. من از کیوت 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(); } اما نشون نمیده. کسی میدونه کجای کار اشکال داره؟
  13. سلام، من دارم پروژه جدید می‌سازم با QML. سوالم اینه که می‌خوام کاربر با زدن دکمه منو صفحه درج کاربر براش باز شه. صفحه درج کاربر باید از چه جنسی باشه؟(Qt Quick 2 or QML UI File) در نظر داشته باشید که همگی دارای کد نویسی c++ هستند چجوری با زدن دکمه این صفحه را باز کنم؟ من با ویجت کار کردم اما QML برای بار اولم هست. دیدم که فایل cpp و .h را باید بسازیم . با ماکروی Q_PROPERRTY مقدار میدید . بعد هم تو فایل QML باید import کنیم. اما خوب چجوری با زدن دکمه بالا بیاد و بسته بشه؟؟؟ طبق چیزی که اینجا نوشته Qt Quick UI Forms از این ویژگی ها پشتیبانی نمی شود JavaScript blocks Function definitions Function calls (except qsTr) Other bindings than pure expressions Signal handlers States in other items than the root item Root items that are not derived from QQuickItem or Item و از این نوع مدل ها هم پشتیبانی نمی کند Behavior Binding Canvas Component Shader Effect Timer Transform Transition پس یعنی باید از کوییک 2 استفاده کرد فقط ؟ اما دیدم کوییک 2 را کامپوننت میکنند تو مثال ها. الان می گیج شدم . برای ساخت صفحات برنامم باید از چی استفاده کنم؟ و در آخر کسی پروژه چند صفحه ای دیتابیسی QML نمیشناسه که من بیشتر ازش یاد بگیرم. پروژه دمو یا سمپل ممنون
×