2012-08-07 27 views
0

我有一個只包含網格的Window對象。我想使用Gtk :: Builder來獲取指向網格的指針,然後使用一些Gtk :: Box的Gtk::Box->pack_end()多次添加網格(每次都有操縱的內容)。將Gtk :: Grid重複添加到Gtk :: Box

雖然每一次pack_end()叫我得到:

gtk_box_pack: assertion 'gtk_widget_get_parent (child) == NULL' failed在我的終端和沒有被添加到框。

我該怎麼辦?

感謝

*編輯: 目標: 我想一個數據庫表的條目被放入每個記錄的花式小部件,但在垂直方向上顯示一前一後的所有記錄。我認爲我可以在Glade中創建一個窗口小部件,並使用Gtk :: Builder來獲取它的指針。所以在花哨的格萊德文件中,我有一個窗口包含了一個具有我自定義外觀的網格。當我嘗試add,pointer to the fancy *grid*,to,visible window's Box時,我得到上述錯誤。我希望我很清楚。

+0

唉,有人嗎? – Haix64 2012-08-07 17:12:33

+1

某些代碼會很有用。 – ergosys 2012-08-08 02:30:46

+0

列表視圖不是一個更好的選擇,從數據庫的行數據行? – senshikaze 2012-08-08 20:04:35

回答

0

這裏的解決gtk_box_pack: assertion 'gtk_widget_get_parent (child) == NULL' failed

所有需要放在第一位做的是,你應該繪製控件沒有窗戶,所以當建設者加載,它不會有一個家長,因此斷言成功。

雖然這裏還有一點:當我將第一個網格實例添加到Box時,第二個會再次導致相同的錯誤。經過幾次試驗和錯誤之後,我意識到,在每一次交互中,您都應該使用Gtk::Builder::create_from_file()來創建一個可以使用的新的無父級網格實例,並且這種方式可以工作。

如果記錄的數量很大,但是Gtk :: Widget的拷貝構造函數是私有的,並且不可能直接拷貝,並且因爲它不是我主要的癡迷,所以在性能上必須有很大的差異並沒有堅持要解決這個「表現」問題。

+3

將來,您可能會嘗試在您的問題中發佈一些代碼。我不明白你的第一點是什麼,但是如果你告訴我們你在做什麼,第二點就顯而易見了。 – ergosys 2012-08-13 00:45:00

+0

@ergosys哦,我很抱歉,我想我應該這樣做,儘管代碼對於我來說每個父母的構造函數都是很稀疏的。我理解stackoverflow是關於編程,但我想區分它與「編碼」,這不是我們所做的唯一事情。謝謝。 – Haix64 2012-08-13 06:47:26