我必須實現什麼才能使自己的布爾小部件與QDataWidgetMapper一起使用?如何實現用於QDataWidgetMapper的自定義布爾小部件?
我已經創建了映射器的USER屬性,據我的理解,應該使用。
使用(相同)QDataWidgetMapper通過QSqlTableModel與數據庫的交互與qt自己的小部件一起工作,但似乎不適用於我創建的這個小部件。
即使小部件工作並顯示數據庫數據,更改小部件值也不會更改數據庫中的值。 [校正:從數據庫中的數據被讀出到窗口小部件的狀態確定。]
電流頭文件:
#ifndef COMPENSATIONCONTROLCHECKABLE_H
#define COMPENSATIONCONTROLCHECKABLE_H
#include <QAbstractButton>
#include <QWidget>
namespace Ui {
class CompensationControlCheckable;
}
class CompensationControlCheckable : public QAbstractButton
{
Q_OBJECT
Q_PROPERTY(bool checked READ isChecked WRITE setChecked NOTIFY compensationChanged USER true)
public:
explicit CompensationControlCheckable(QWidget *parent = 0);
~CompensationControlCheckable();
void setChecked(bool checkd);
const bool isChecked() const;
void paintEvent(QPaintEvent *e);
void resizeEvent(QResizeEvent *e);
private slots:
void on_startCompensation_clicked();
void on_cancelCompensation_clicked();
signals:
void compensationChanged(bool);
void checked(bool);
private:
bool checkedValue;
Ui::CompensationControlCheckable *ui;
};
#endif // COMPENSATIONCONTROLCHECKABLE_H
2版,現在我已刪除檢查覆蓋,而是調用QAbstractButton setChecked和器isChecked在setCompensation和分別是補償。構造函數調用setCheckable(true);.這與上面的完全一樣。從數據庫確定讀取,寫入到數據庫不起作用:
#ifndef COMPENSATIONCONTROLCHECKABLE_H
#define COMPENSATIONCONTROLCHECKABLE_H
#include <QAbstractButton>
#include <QWidget>
namespace Ui {
class CompensationControlCheckable;
}
class CompensationControlCheckable : public QAbstractButton
{
Q_OBJECT
Q_PROPERTY(bool compensation READ isCompensation WRITE setCompensation NOTIFY compensationChanged USER true)
public:
explicit CompensationControlCheckable(QWidget *parent = 0);
~CompensationControlCheckable();
void setCompensation(bool checkd);
bool isCompensation() const;
void paintEvent(QPaintEvent *e);
void resizeEvent(QResizeEvent *e);
private slots:
void on_startCompensation_clicked();
void on_cancelCompensation_clicked();
signals:
void compensationChanged(bool);
private:
bool compensationValue;
Ui::CompensationControlCheckable *ui;
};
#endif // COMPENSATIONCONTROLCHECKABLE_H
對於QDataWidgetMapper的5.3文檔說,以下所以我有上面的USER屬性應該可以嗎?你從哪裏獲得「價值」財產的想法? 「 」默認情況下,每個控件的用戶屬性用於在模型和控件之間傳輸數據。由於Qt 4.3,額外的addMapping()函數允許使用命名屬性來代替默認的用戶屬性。 – savolai 2014-11-24 12:10:09
確實:再次查看'QAbstractButton'已經有一個名爲checked的用戶屬性 – 2014-11-24 12:11:34
所以,你到底在說什麼?我的上面的例子應該工作? (Q更新,實際上它讀取數據庫好,只是不寫入數據庫) – savolai 2014-11-24 12:12:57