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

Time for action – adding properties to the board class

In this exercise, we will be adding a useful property to the board class. The property is going to hold information about the player who should make the next move. The type of the property is going to be the TicTacToeWidget::Player enumeration that we created earlier. For the getter and the setter methods, we are going to use the two functions that we created earlier: currentPlayer() and setCurrentPlayer().

Open the header file for our class and modify the class definition as shown in the following code:

class TicTacToeWidget : public QWidget {
  Q_OBJECT
 Q_ENUMS(Player)
 Q_PROPERTY(Player currentPlayer READ currentPlayer
 WRITE setCurrentPlayer
 NOTIFY currentPlayerChanged)
public:
  enum Player { Invalid, Player1, Player2, Draw };

What just happened?

Since we want to use an enumeration as a type of a property, we have to inform Qt's meta-object system about the enum. This is done with the Q_ENUMS macro. Then, we declare a property called currentPlayer and mark our two existing methods as getter and setter for the property. We also use the NOTIFY keyword to mark currentPlayerChanged as a signal that is sent to inform about a change in the value of the property. We won't be using this extra information in our small game, and we don't require currentPlayer to be a property at all, but it is always a good idea to try and find good candidates for properties and expose them because some day, someone might want to use our class in a way we hadn't predicted and a particular property might become useful.

主站蜘蛛池模板: 淳安县| 漯河市| 犍为县| 仪征市| 手游| 永福县| 福鼎市| 西畴县| 德兴市| 黄陵县| 河曲县| 雅安市| 镇巴县| 车险| 肇源县| 祁东县| 甘南县| 镇赉县| 绥阳县| 平乐县| 陕西省| 金川县| 荔波县| 皮山县| 湛江市| 都安| 仲巴县| 那坡县| 巴中市| 德清县| 墨竹工卡县| 灵宝市| 凤山市| 庆安县| 凤庆县| 绵阳市| 榕江县| 上虞市| 汽车| 高青县| 江津市|