- Game Programming Using Qt Beginner's Guide
- Witold Wysota Lorenz Haas
- 263字
- 2021-08-20 10:45:16
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.
- Practical Data Analysis Cookbook
- Python程序設計教程(第2版)
- OpenDaylight Cookbook
- 潮流:UI設計必修課
- 算法基礎:打開程序設計之門
- Designing Hyper-V Solutions
- 創意UI:Photoshop玩轉APP設計
- PyQt編程快速上手
- MyBatis 3源碼深度解析
- Kotlin進階實戰
- Java程序設計實用教程(第2版)
- Python大數據與機器學習實戰
- 快速搞定Spring Boot+Vue全棧開發
- 數據預處理從入門到實戰:基于SQL、R、Python
- JavaScript實戰-JavaScript、jQuery、HTML5、Node.js實例大全(第2版)