2011-06-24 25 views
0

我正在使用QtPropertyBrowser作爲QSqlTableModel的前端。所以表中的每個字段在瀏覽器中都有自己的屬性。它允許用戶編輯數據庫中的字段值。但是,如果DB中的值爲NULL,則該屬性根本不顯示。我試過類似的東西QtPropertyBrowser中的空白值

item->setValue(QVariant()); 

但它會導致段錯誤。

whith字符串字段沒有問題:如果它是NULL,我只需插入QString(「」),屬性瀏覽器中的值字段變爲空白。但是我能用數字數據類型做什麼?

謝謝。

+0

你好,你有沒有找到這方面的解決方案?我面臨同樣的問題;-( –

+0

@ ludek-vodicka;我的同事通過以下方式修改QtProperty框架的源代碼解決了這個問題:如果一個屬性是可爲空的,他會創建一個帶有「NULL」複選框的特殊編輯器。如果用戶設置了它 - 該屬性將被禁用 – typbl4

+0

感謝您的回覆。我還需要爲我的目的重新實現QtPropertBrowser框架的一部分,因此擴展爲NULL複選框是可能的,也是個好主意。謝謝。 –

回答

0

documentation指出QVariant::QVariant()構造一個無效的變體。我只會給它QVariant(0),而這可以轉換爲大多數其他類型。

+0

感謝您的回答。但有一些不明確的地方:用戶不能理解「0」是指NULL還是它之前設置的具體值。 – typbl4

+0

順便提一句,我在item-> setValue(QVariant(0))上有段錯誤;即使在整數域。 – typbl4

+0

只是一個很快的猜測,自從我上次使用屬性編輯器以來已經有一段時間了,正如@OrcunC指出的那樣,一個無效的變體似乎完全不是無效的:)沒有havi在訪問你的代碼的過程中,我仍然猜測,你的指針對項目是無效的。你當然可以使用你的調試器進入屬性編輯器;因爲它來自QtSolutions,應該可以使用源代碼(恐怕不是供應商提供的代碼之前;)) –

0

我會根據QT文檔對進行猜測

如果您的值爲NULL,您可以創建屬性,就好像它是一個組,如下所示,但這不會讓您編輯它。如果沒有,那麼就像你一樣創建一個屬性,並像往常一樣設置它的值。

//Create a property 
QtVariantProperty *nullType = variantManager->addProperty(
     QtVariantPropertyManager::groupTypeId(), "Your property name"); 

groupTypeId似乎允許QVariant ::無效。

+0

謝謝,但我必須提供可編輯的字段。 – typbl4