官术网_书友最值得收藏!

Time for action – filling in the central widget

Add two labels in the main window area—one at the top for the first player name and one at the bottom of the form for the second player name—and then change their objectName property to player1 and player2, respectively. Clear their text property so that they don't display anything. Then, drag Widget from the widget box, drop it between the two labels' and set its object name to gameBoard. Invoke the context menu on the widget that you just dropped and choose Promote to. This allows us to substitute a widget in the form with another class; in our case, we will want to replace the empty widget with our game board. Fill the dialog that has just appeared with the values shown in the following figure:

Then, click on the button labeled Add and then Promote to close the dialog and confirm the promotion. You will not notice any changes in the form because the replacement only takes place during compilation. Now, apply a vertical layout on the form so that the labels and the empty widget snap into place.

What just happened?

Not all widget types are directly available in the form designer. Sometimes, we need to use widget classes that will only be created in the project that is being built. The simplest way to be able to put custom widgets on a form is to ask the designer to replace class names with some of the objects when C++ code for the form is to be generated. By promoting an object to a different class, we saved a lot of work trying to otherwise fit our game board into the user interface.

主站蜘蛛池模板: 禄劝| 扎赉特旗| 新巴尔虎左旗| 卫辉市| 潮州市| 类乌齐县| 曲水县| 普宁市| 临汾市| 华池县| 临桂县| 通河县| 阿城市| 游戏| 彰武县| 象山县| 赫章县| 定西市| 曲靖市| 手机| 榆社县| 若尔盖县| 定陶县| 望都县| 玛多县| 边坝县| 安化县| 贞丰县| 萍乡市| 永修县| 连山| 柘荣县| 拉萨市| 罗田县| 尼木县| 怀柔区| 慈利县| 伊通| 确山县| 天门市| 古蔺县|