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

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.

主站蜘蛛池模板: 来宾市| 海伦市| 抚顺市| 蒙自县| 乐安县| 江山市| 衡东县| 诏安县| 驻马店市| 什邡市| 嘉禾县| 乐平市| 铜川市| 房山区| 五河县| 黔江区| 英超| 盐亭县| 新沂市| 册亨县| 灯塔市| 中方县| 嘉义市| 托里县| 望都县| 孝义市| 宕昌县| 社旗县| 怀仁县| 绥滨县| 崇仁县| 邯郸市| 泗阳县| 福海县| 彰化县| 诏安县| 安远县| 胶南市| 郴州市| 大姚县| 苍山县|