QSqlQueryModel :: veriler boş veri dönen içi değeri: denQSqlQuery :: <code>SQL</code> deyimi aşağıdaki dayalı veritabanından veri ayıklar <strong>UeOrdersModel</strong> adlı ben <code>QSqlQueryModel</code> sınıflandırma var
SELECT ORDERS.USER_ID,
PEOPLE.NAME,
PLACE_ID,
PLACES.NAME,
PRODUCT_ID,
PRODUCTS.IMAGE,
PRODUCTS.NAME,
PRODUCTS.PRICESELL,
TAXES.RATE,
ORDERS.PRODUCT_QUANTITY
FROM ORDERS
JOIN PEOPLE
ON ORDERS.USER_ID=PEOPLE.ID
JOIN PRODUCTS
ON ORDERS.PRODUCT_ID=PRODUCTS.ID
JOIN PLACES
ON ORDERS.PLACE_ID=PLACES.ID
JOIN TAXCATEGORIES
ON PRODUCTS.TAXCAT=TAXCATEGORIES.ID
JOIN TAXES
ON TAXCATEGORIES.ID=TAXES.ID
WHERE ORDERS.USER_ID="15a2a62b-2a95-4d88-b0ad-d98001d730b4"
AND ORDERS.PLACE_ID="1";
ve burada phpmyadmin
çıkışı benim veritabanı: o hatasız infaz beri
╔══════════════════════════════════════╦═══════════╦══════════╦════════╦══════════════════════════════════════╦═══════╦═══════════════════╦═══════════════╦═══════╦══════════════════╗
║ USER_ID ║ NAME ║ PLACE_ID ║ NAME ║ PRODUCT_ID ║ IMAGE ║ NAME ║ PRICESELL ║ RATE ║ PRODUCT_QUANTITY ║
╠══════════════════════════════════════╬═══════════╬══════════╬════════╬══════════════════════════════════════╬═══════╬═══════════════════╬═══════════════╬═══════╬══════════════════╣
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ eda6eaa3-fb7d-4470-8890-9b05aaf97fb6 ║ NULL ║ Test product 1991 ║ 25 ║ 0 ║ 1 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ 8d307531-afe5-4746-a1f1-be5a743d453f ║ NULL ║ Test product 1761 ║ 1,8264840183 ║ 0,095 ║ 1 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ 158e427c-11df-49b8-8d39-bfeff97c8f91 ║ NULL ║ Test product 1333 ║ 1,6393442623 ║ 0,22 ║ 6 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ 2890fc4f-2e59-4c34-b838-b43b0dceb145 ║ NULL ║ Test product 33 ║ 1,6393442623 ║ 0,22 ║ 1 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ 3b12cb57-0ecd-48e6-9c78-8b1715a365d5 ║ NULL ║ Test product 34 ║ 1,6393442623 ║ 0,22 ║ 2 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ 3e72f6dc-baf5-4872-a42c-03b5a2748339 ║ NULL ║ Test product 75 ║ 12,2950819672 ║ 0,22 ║ 3 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ 5e02ff9c-dcb3-42b1-a04e-f3728d06af3b ║ NULL ║ Test product 20 ║ 1,6393442623 ║ 0,22 ║ 12 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ 67d44180-02c5-40b4-8c60-deebc99c1909 ║ NULL ║ Test product 19 ║ 2,868852459 ║ 0,22 ║ 1 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ 6951109f-ae14-4691-b3b9-c64f11059780 ║ NULL ║ Test product 18 ║ 1,6393442623 ║ 0,22 ║ 1 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ 7c007b66-2429-4e28-8bc0-8a15e595c606 ║ NULL ║ Test product 52 ║ 1,6393442623 ║ 0,22 ║ 1 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ 7e43ff6a-80d9-4669-8600-a57f6ff030f7 ║ NULL ║ Test product 12 ║ 1,6393442623 ║ 0,22 ║ 6 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ 9ab29108-b058-48a3-b012-4c6684470217 ║ NULL ║ Test product 13 ║ 2,7049180328 ║ 0,22 ║ 1 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ a549b305-6a34-4d3a-b53c-63a93a2dea4a ║ NULL ║ Test product 96 ║ 0,0819672131 ║ 0,22 ║ 1 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ ba9d3fd6-2ed6-4eba-8f4e-4b550074b469 ║ NULL ║ Test product 120 ║ 1,0655737705 ║ 0,22 ║ 1 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ c23d03eb-dcf9-4757-bdad-161226753492 ║ NULL ║ Test product 5 ║ 1,8852459016 ║ 0,22 ║ 1 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ c30ceddf-2d89-492b-a5c3-defbe4999dd2 ║ NULL ║ Test product 4 ║ 12,2950819672 ║ 0,22 ║ 1 ║
║ 15a2a62b-2a95-4d88-b0ad-d98001d730b4 ║ Test User ║ 1 ║ Miza 1 ║ e60ed145-5bbd-40e5-84f0-0ad8e63515d3 ║ NULL ║ Test product 12 ║ 1,0655737705 ║ 0,22 ║ 1 ║
╚══════════════════════════════════════╩═══════════╩══════════╩════════╩══════════════════════════════════════╩═══════╩═══════════════════╩═══════════════╩═══════╩══════════════════╝
biz SQL
deyimi kendisi bir sorun değildir, gördüğünüz gibi. Ancak, program akışı alt sınıf QSqlQueryModel::data()
yöntemine girdiğinde, tüm sahip olduğum her lanet rol için boş dizelerdir. Ben veritabanı bağlantısı triplecheked ettik, bağlantı tamam, sorgu sorunsuz bir şekilde yürütülür ve artık tanrı lanet bir fikrim var. Birisi bana bazı ipuçları verebilir mi?
#ifndef UEORDERSMODEL_H
#define UEORDERSMODEL_H
#include <QObject>
#include <QSqlQueryModel>
#include <QQuickImageProvider>
#include <QObject>
#include <QSqlRecord>
#include <QSqlQuery>
#include <QList>
#include <QDebug>
#include <QSqlError>
#include <QSqlField>
#include "../settings/uedefaults.h"
#include "../core/uedatabaseconnectionstatus.h"
#include "../core/uetypes.h"
#include "../database/ueuserrecord.h"
class UeOrdersModel : public QSqlQueryModel,
public QQuickImageProvider
{
Q_OBJECT
friend class UeApplicationStatus;
private:
QString m_ueUserId;
QString m_uePlaceId;
QString m_ueUserName;
QString m_uePlaceName;
QSqlDatabase m_ueDb;
QSqlDatabase ueDatabase() const
{ return this->m_ueDb; }
void ueSetDatabase(const QSqlDatabase& database)
{ this->m_ueDb=database; }
void queryChange();
public:
explicit UeOrdersModel(QObject *parent = 0,
const QString& userId="",
const QString& placeId="",
const QString &userName="",
const QString &placeName="");
~UeOrdersModel();
inline QString ueUserId() const
{ return this->m_ueUserId; }
inline QString uePlaceId() const
{ return this->m_uePlaceId; }
inline QString ueUserName() const
{ return this->m_ueUserName; }
inline QString uePlaceName() const
{ return this->m_uePlaceName; }
inline void ueSetUserId(const QString& userId)
{ this->m_ueUserId=userId; }
inline void ueSetPlaceId(const QString& placeId)
{ this->m_uePlaceId=placeId; }
inline void ueSetUserName(const QString& userName)
{ this->m_ueUserName=userName; }
inline void ueSetPlaceName(const QString& placeName)
{ this->m_uePlaceName=placeName; }
QVariant data(const QModelIndex &index,
int role=Qt::DisplayRole) const Q_DECL_OVERRIDE;
QImage requestImage(const QString &id,
QSize *size,
const QSize &requestedSize);
UeTypeRoles roleNames() const;
int rowCount(const QModelIndex &parent) const;
int columnCount(const QModelIndex &parent) const;
Q_INVOKABLE QVariantMap get(int row);
void ueConnectToDatabase(const QString& userId,
const QString& placeId);
Q_INVOKABLE bool ueAddOrder(const QString& userId,
const QString& placeId,
const QString& productId,
const QString& quantity);
public:
static const int ueRoleUserId=Qt::UserRole+1;
static const int ueRoleUserName=Qt::UserRole+2;
static const int ueRolePlaceId=Qt::UserRole+3;
static const int ueRolePlaceName=Qt::UserRole+4;
static const int ueRoleProductId=Qt::UserRole+5;
static const int ueRoleProductImage=Qt::UserRole+6;
static const int ueRoleProductName=Qt::UserRole+7;
static const int ueRoleProductPriceSell=Qt::UserRole+8;
static const int ueRoleProductVatRate=Qt::UserRole+9;
static const int ueRoleProductQuantity=Qt::UserRole+10;
static const int ueRoleOrderAmountWithoutVAT=Qt::UserRole+11;
static const int ueRoleOrderAmountWithVAT=Qt::UserRole+12;
signals:
void ueSignalDatabaseConnectionChanged(const UeDatabaseConnectionStatus::UeTypeDatabaseConnectionStatus& newStatus);
public slots:
Q_INVOKABLE void ueSlotRefreshOrdersData(const QString& userId,
const QString& placeId);
};
#endif // UEORDERSMODEL_H
ve uygulaması: UeOrdersModelmain.cpp
kolayca hazırlanır
#include "ueordersmodel.h"
UeOrdersModel::UeOrdersModel(QObject *parent,
const QString& userId,
const QString& placeId,
const QString& userName,
const QString& placeName)
: QSqlQueryModel(parent),
QQuickImageProvider(QQmlImageProviderBase::Image,
QQmlImageProviderBase::ForceAsynchronousImageLoading)
{
this->ueSetUserId(userId);
this->ueSetPlaceId(placeId);
this->ueSetUserName(userName);
this->ueSetPlaceName(placeName);
} // constructor
UeOrdersModel::~UeOrdersModel()
{
} // destructor
QVariant UeOrdersModel::data(const QModelIndex &index,
int role) const
{
qDebug() << "(UeOrdersModel::data) this->query().lastQuery(): " << this->query().lastQuery()
<< "\n"
<< "(UeOrdersModel::data) this->query().executedQuery(): " << this->query().executedQuery()
<< "\n"
<< "(UeOrdersModel::data) this->query().isValid(): " << this->query().isValid();
bool result=false;
if(!this->query().isValid())
{
if(this->query().isActive())
if(this->query().isSelect())
result=this->query().first();
}
if(index.isValid()&&index.row()>=0&&index.column()>=0&&this->record().isEmpty()==false&&this->query().isValid())
{
switch(role)
{
case ueRoleUserId:
{
return this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_USERID).toString();
} break;
case ueRoleUserName:
{
return this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_USERNAME).toString();
} break;
case ueRolePlaceId:
{
return this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_PLACEID).toString();
} break;
case ueRolePlaceName:
{
return this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_PLACENAME).toString();
} break;
case ueRoleProductId:
{
return this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_PRODUCTID).toString();
} break;
case ueRoleProductImage:
{
return this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_PRODUCTIMAGE).toString();
} break;
case ueRoleProductName:
{
return this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_PRODUCTNAME).toString();
} break;
case ueRoleProductPriceSell:
{
return QString::number(this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_PRODUCT_PRICESELL).toDouble());
} break;
case ueRoleProductVatRate:
{
return QString::number(this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_PRODUCT_VATRATE).toDouble());
} break;
case ueRoleProductQuantity:
{
return QString::number(this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_PRODUCT_QUANTITY).toUInt());
} break;
case ueRoleOrderAmountWithoutVAT:
{
return QString::number(this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_PRODUCT_QUANTITY).toUInt()*
this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_PRODUCT_PRICESELL).toDouble());
} break;
case ueRoleOrderAmountWithVAT:
{
return QString::number(this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_PRODUCT_QUANTITY).toUInt()*
(this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_PRODUCT_PRICESELL).toDouble()+
(this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_PRODUCT_PRICESELL).toDouble()*
this->record(index.row()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_PRODUCT_VATRATE).toDouble())));
} break;
default:
{
return QVariant();
} break; // default
} // switch
} // if
return QVariant();
} // data
QImage UeOrdersModel::requestImage(const QString &id,
QSize *size,
const QSize &requestedSize)
{
Q_UNUSED(size)
Q_UNUSED(requestedSize);
QImage image=QImage::fromData(this->record(id.toInt()).value(UePosDatabase::UeQueryIndexes::QUERY_GET_ORDERS_FILTERED_BY_USERNAME_PLACENAME::INDEX_PRODUCTIMAGE).toByteArray(),
"PNG");
if(image.isNull())
{
image=QImage(":/ueIcons/icons/ueGenericProduct.png");
}
return image.scaled(UeDefaults::UeGraphics::UeProductImageSize::IMAGE_WIDTH,
UeDefaults::UeGraphics::UeProductImageSize::IMAGE_HEIGHT,
Qt::IgnoreAspectRatio,
Qt::SmoothTransformation);;
} // requestImage
UeTypeRoles UeOrdersModel::roleNames() const
{
UeTypeRoles roles;
const int iRoleUserId=UeOrdersModel::ueRoleUserId;
const int iRoleUserName=UeOrdersModel::ueRoleUserName;
const int iRolePlaceId=UeOrdersModel::ueRolePlaceId;
const int iRolePlaceName=UeOrdersModel::ueRolePlaceName;
const int iRoleProductId=UeOrdersModel::ueRoleProductId;
const int iRoleProductImage=UeOrdersModel::ueRoleProductImage;
const int iRoleProductName=UeOrdersModel::ueRoleProductName;
const int iRoleProductPriceSell=UeOrdersModel::ueRoleProductPriceSell;
const int iRoleProductVatRate=UeOrdersModel::ueRoleProductVatRate;
const int iRoleProductQuantity=UeOrdersModel::ueRoleProductQuantity;
const int iRoleOrderAmountWithoutVAT=UeOrdersModel::ueRoleOrderAmountWithoutVAT;
const int iRoleOrderAmountWithVAT=UeOrdersModel::ueRoleOrderAmountWithVAT;
roles.insert(iRoleUserId,
"ueRoleUserId");
roles.insert(iRoleUserName,
"ueRoleUserName");
roles.insert(iRolePlaceId,
"ueRolePlaceId");
roles.insert(iRolePlaceName,
"ueRolePlaceName");
roles.insert(iRoleProductId,
"ueRoleProductId");
roles.insert(iRoleProductImage,
"ueRoleProductImage");
roles.insert(iRoleProductName,
"ueRoleProductName");
roles.insert(iRoleProductPriceSell,
"ueRoleProductPriceSell");
roles.insert(iRoleProductVatRate,
"ueRoleProductVatRate");
roles.insert(iRoleProductQuantity,
"ueRoleProductQuantity");
roles.insert(iRoleOrderAmountWithoutVAT,
"ueRoleOrderAmountWithoutVAT");
roles.insert(iRoleOrderAmountWithVAT,
"ueRoleOrderAmountWithVAT");
return roles;
} // roleNames
int UeOrdersModel::columnCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
// qDebug() << "UeOrdersModel::columnCount: " << this->record().count();
return this->record().count();
}
int UeOrdersModel::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
// qDebug() << "UeOrdersModel::rowCount: " << this->query().size();
return this->query().size();
} // rowCount
QVariantMap UeOrdersModel::get(int row)
{
QHash<int,QByteArray> names=this->roleNames();
QHashIterator<int, QByteArray> i(names);
QVariantMap res;
while (i.hasNext())
{
i.next();
QModelIndex idx=this->index(row,
0);
QVariant data=idx.data(i.key());
res[i.value()]=data;
} // while
return res;
} // get
void UeOrdersModel::ueConnectToDatabase(const QString& userId,
const QString& placeId)
{
if(!QSqlDatabase::connectionNames().contains(UePosDatabase::UeDatabaseConnectionNames::DATABASE_CONNECTION_NAME_ORDERS,
Qt::CaseInsensitive))
{
this->ueSetDatabase(QSqlDatabase::addDatabase(UePosDatabase::DATABASE_DRIVER,
UePosDatabase::UeDatabaseConnectionNames::DATABASE_CONNECTION_NAME_ORDERS));
} // if
this->ueDatabase().setHostName(UePosDatabase::UeDatabaseConnectionParameters::DATABASE_HOSTNAME);
this->ueDatabase().setDatabaseName(UePosDatabase::UeDatabaseConnectionParameters::DATABASE_NAME);
this->ueDatabase().setUserName(UePosDatabase::UeDatabaseConnectionParameters::DATABASE_USERNAME);
this->ueDatabase().setPassword(UePosDatabase::UeDatabaseConnectionParameters::DATABASE_PASSWORD);
if(this->ueDatabase().open())
{
this->setQuery(UePosDatabase::UeSqlQueries::UeTableOrders::SQL_QUERY_GET_ORDERS_FILTERED_BY_USERID_PLACEID.arg(userId)
.arg(placeId),
this->ueDatabase());
if(this->lastError().isValid())
{
emit this->ueSignalDatabaseConnectionChanged(UeDatabaseConnectionStatus::NOT_CONNECTED);
qDebug() << this->lastError().text();
}
else
{
emit this->ueSignalDatabaseConnectionChanged(UeDatabaseConnectionStatus::CONNECTED);
} // if
}
else
{
emit this->ueSignalDatabaseConnectionChanged(UeDatabaseConnectionStatus::NOT_CONNECTED);
} // if
} // ueConnectToDatabase
bool UeOrdersModel::ueAddOrder(const QString& userId,
const QString& placeId,
const QString& productId,
const QString& quantity)
{
QSqlQuery queryInsertOrder(this->ueDatabase());
bool result=false;
queryInsertOrder.prepare(UePosDatabase::UeSqlQueries::UeTableOrders::SQL_QUERY_INSERT_NEW_RECORD);
queryInsertOrder.addBindValue(userId);
queryInsertOrder.addBindValue(placeId);
queryInsertOrder.addBindValue(productId);
queryInsertOrder.addBindValue(quantity.toUInt());
if(queryInsertOrder.exec())
{
result=true;
}
else
{
if(queryInsertOrder.lastError().nativeErrorCode().compare(UePosDatabase::UeMySQLErrors::SQL_ERROR_RECORD_ALREADY_EXISTS)==0)
{
QSqlQuery queryIncreaseProductQuantity(this->ueDatabase());
queryIncreaseProductQuantity.prepare(UePosDatabase::UeSqlQueries::UeTableOrders::SQL_QUERY_INCREASE_PRODUCT_QUANTITY.arg(userId)
.arg(placeId)
.arg(productId));
if(queryIncreaseProductQuantity.exec())
{
result=true;
}
else
{
result=false;
} // if
} // if
} // if
if(result==true)
{
this->setQuery(UePosDatabase::UeSqlQueries::UeTableOrders::SQL_QUERY_GET_ORDERS_FILTERED_BY_USERID_PLACEID.arg(userId)
.arg(placeId),
this->ueDatabase());
if(this->lastError().isValid())
{
qDebug() << this->lastError().text();
} // if
} // if
return result;
} // ueAddOrder
void UeOrdersModel::ueSlotRefreshOrdersData(const QString& userId,
const QString& placeId)
{
this->ueSetUserId(userId);
this->ueSetPlaceId(placeId);
if(this->ueDatabase().isOpen())
{
this->setQuery(UePosDatabase::UeSqlQueries::UeTableOrders::SQL_QUERY_GET_ORDERS_FILTERED_BY_USERID_PLACEID.arg(userId)
.arg(placeId),
this->ueDatabase());
}
else
{
this->ueConnectToDatabase(userId,
placeId);
} // if
bool result=this->query().first();
int i=0;
} // ueSlotRefreshOrdersData
void UeOrdersModel::queryChange()
{
qDebug() << "UeOrdersModel::queryChange(): " << this->query().lastQuery();
} // queryChange
, bu (dediğim gibi, 3x işaretli) veritabanına bağlanır:
İşte UeOrdersModel başlığıdırUeOrdersModel* ueOrdersModel=new UeOrdersModel(qApp);
Bu uygulamanın içinde çok benzer modeller var, hepsi işe yarar Mükemmel, bu değil.
dönüş QSqlQueryModel :: veri (öğe, rol) deneyin; Veri yöntemindeki varsayılan değer için . Ayrıca, qsqlquerymodel kullanmıyorum, ancak rolleri tanımlamanın sütunları almanın standart yolu olup olmadığını merak ediyorum. –
@johnelemans Kullandığım diğer modellerde rolleri tanımladım ve iyi çalışıyorlar. 'QSqlQueryModel :: data (item, role);' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'metodunu ekledim, şimdi çalışır! İpucunu cevap haline getirebilir misin? – KernelPanic
evet lütfen yükseltme! –