1
QStandardItem 을 부호없는 int에서 int로 변경 한 후 QStandardItemModel을 사용하여 QTableview를 만듭니다. 이 동작은 unsigned int에 발생하며 사용자가 편집하는 동안 다른 데이터 유형은 유지됩니다.QStandardItem은 편집 후 부호없는 int를 int로 변환합니다.
window.cpp
#include "window.h"
#include "ui_window.h"
#include <QTableView>
#include <QStandardItem>
#include <QDebug>
Window::Window(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Window)
{
ui->setupUi(this);
QTableView *tblview = new QTableView(this);
model = new QStandardItemModel(0,0);
tblview->setModel(model);
QStandardItem *data=new QStandardItem;
data->setEditable(true);
data->setData(QVariant((uint)1), Qt::DisplayRole);
model->setItem(0, 0, data);
tblview->show();
QModelIndex index = model->index(0, 0, QModelIndex());
tblview->setGeometry(0,0,200,200);
//result QVariant(uint, 1)
qDebug() << model->data(index);
connect(model, SIGNAL(itemChanged(QStandardItem*)), this, SLOT(dataChanged(QStandardItem*)));
}
Window::~Window()
{
delete ui;
}
void Window::dataChanged(QStandardItem* stditem)
{
//result
//QVariant(int, 3)
//expected result
//QVariant(uint, 3)
qDebug() << model->data(stditem->index());
}
window.h
#ifndef WINDOW_H
#define WINDOW_H
#include <QMainWindow>
#include <QStandardItem>
namespace Ui {
class Window;
}
class Window : public QMainWindow
{
Q_OBJECT
public:
explicit Window(QWidget *parent = 0);
~Window();
private:
Ui::Window *ui;
QStandardItemModel* model;
private slots:
void dataChanged(QStandardItem*);
};
#endif // WINDOW_H
질문이 지금은 버그입니다, 왜냐하면 변환은 단지 uint가 발생하기 때문입니다. – nfo
이것은 버그 일 수 있습니다. 몇 가지 테스트를했는데 float은 QString이됩니다. 어쩌면 버그 보고서를 작성해야합니다. https://bugreports.qt.nokia.com/secure/Dashboard.jspa – pnezis