Below is the full text to include/qt_win.h from NetHack 3.4.3. To link to a particular line, write [[qt_win.h#line123]], for example.
1. // SCCS Id: @(#)qt_win.h 3.4 1999/11/19 2. // Copyright (c) Warwick Allison, 1999. 3. // NetHack may be freely redistributed. See license for details. 4. //
The NetHack General Public License applies to screenshots, source code and other content from NetHack. |
5. // Qt Binding for NetHack 3.4 6. // 7. // Unfortunately, this doesn't use Qt as well as I would like, 8. // primarily because NetHack is fundamentally a getkey-type 9. // program rather than being event driven (hence the ugly key 10. // and click buffer rather), but also because this is my first 11. // major application of Qt. 12. // 13. 14. #ifndef qt_win_h 15. #define qt_win_h 16. 17. #define QT_CLEAN_NAMESPACE 18. 19. #include <qdialog.h> 20. #include <qpushbutton.h> 21. #include <qbuttongroup.h> 22. #include <qlabel.h> 23. #include <qlineedit.h> 24. #if defined(QWS) 25. #include <qpe/qpeapplication.h> 26. #else 27. #include <qapplication.h> 28. #endif 29. #include <qspinbox.h> 30. #include <qcheckbox.h> 31. #include <qfile.h> 32. #include <qlistbox.h> 33. #include <qlistview.h> 34. #include <qmessagebox.h> 35. #include <qpixmap.h> 36. #include <qimage.h> 37. #include <qarray.h> 38. #include <qcombobox.h> 39. #include <qscrollview.h> 40. #if QT_VERSION >= 300 41. #include <qttableview.h> 42. // Should stop using QTableView 43. #define QTableView QtTableView 44. #else 45. #include <qtableview.h> 46. #endif 47. #include <qmainwindow.h> 48. #include <qwidgetstack.h> 49. 50. #ifdef KDE 51. #include <kapp.h> 52. #include <ktopwidget.h> 53. #endif 54. 55. #include "qt_clust.h" 56. 57. class QVBox; 58. class QMenuBar; 59. class QRadioButton; 60. class NhPSListView; 61. 62. ////////////////////////////////////////////////////////////// 63. // 64. // The beautiful, abstracted and well-modelled classes... 65. // 66. ////////////////////////////////////////////////////////////// 67. 68. class NetHackQtGlyphs; 69. 70. class NetHackQtLineEdit : public QLineEdit { 71. public: 72. NetHackQtLineEdit(); 73. NetHackQtLineEdit(QWidget* parent, const char* name); 74. 75. void fakeEvent(int key, int ascii, int state); 76. }; 77. 78. class NetHackQtSettings : public QDialog { 79. Q_OBJECT 80. public: 81. // Size of window - used to decide default sizes 82. NetHackQtSettings(int width, int height); 83. 84. NetHackQtGlyphs& glyphs(); 85. const QFont& normalFont(); 86. const QFont& normalFixedFont(); 87. const QFont& largeFont(); 88. 89. bool ynInMessages(); 90. 91. signals: 92. void fontChanged(); 93. void tilesChanged(); 94. 95. public slots: 96. void toggleGlyphSize(); 97. void setGlyphSize(bool); 98. 99. private: 100. QSpinBox tilewidth; 101. QSpinBox tileheight; 102. QLabel widthlbl; 103. QLabel heightlbl; 104. QCheckBox whichsize; 105. QSize othersize; 106. 107. QComboBox fontsize; 108. 109. QFont normal, normalfixed, large; 110. 111. NetHackQtGlyphs* theglyphs; 112. 113. private slots: 114. void resizeTiles(); 115. }; 116. 117. class NetHackQtKeyBuffer { 118. public: 119. NetHackQtKeyBuffer(); 120. 121. bool Empty() const; 122. bool Full() const; 123. 124. void Put(int k, int ascii, int state); 125. void Put(char a); 126. void Put(const char* str); 127. int GetKey(); 128. int GetAscii(); 129. int GetState(); 130. 131. int TopKey() const; 132. int TopAscii() const; 133. int TopState() const; 134. 135. private: 136. enum { maxkey=64 }; 137. int key[maxkey]; 138. int ascii[maxkey]; 139. int state[maxkey]; 140. int in,out; 141. }; 142. 143. class NetHackQtClickBuffer { 144. public: 145. NetHackQtClickBuffer(); 146. 147. bool Empty() const; 148. bool Full() const; 149. 150. void Put(int x, int y, int mod); 151. 152. int NextX() const; 153. int NextY() const; 154. int NextMod() const; 155. 156. void Get(); 157. 158. private: 159. enum { maxclick=64 }; 160. struct ClickRec { 161. int x,y,mod; 162. } click[maxclick]; 163. int in,out; 164. }; 165. 166. 167. class NetHackQtSavedGameSelector : public QDialog { 168. public: 169. NetHackQtSavedGameSelector(const char** saved); 170. 171. int choose(); 172. }; 173. 174. class NetHackQtPlayerSelector : private QDialog { 175. Q_OBJECT 176. public: 177. enum { R_None=-1, R_Quit=-2, R_Rand=-3 }; 178. 179. NetHackQtPlayerSelector(NetHackQtKeyBuffer&); 180. 181. protected: 182. virtual void done(int); 183. 184. public slots: 185. void Quit(); 186. void Random(); 187. 188. void selectName(const QString& n); 189. void selectRole(); 190. void selectRace(); 191. void setupOthers(); 192. void selectGender(int); 193. void selectAlignment(int); 194. 195. public: 196. bool Choose(); 197. 198. private: 199. NetHackQtKeyBuffer& keysource; 200. NhPSListView* role; 201. NhPSListView* race; 202. QRadioButton **gender; 203. QRadioButton **alignment; 204. bool fully_specified_role; 205. }; 206. 207. class NetHackQtStringRequestor : QDialog { 208. private: 209. QLabel prompt; 210. NetHackQtLineEdit input; 211. QPushButton* okay; 212. QPushButton* cancel; 213. NetHackQtKeyBuffer& keysource; 214. 215. virtual void done(int); 216. 217. public: 218. NetHackQtStringRequestor(NetHackQtKeyBuffer&, const char* p,const char* cancelstr="Cancel"); 219. void SetDefault(const char*); 220. bool Get(char* buffer, int maxchar=80); 221. virtual void resizeEvent(QResizeEvent*); 222. }; 223. 224. class NetHackQtExtCmdRequestor : public QDialog { 225. Q_OBJECT 226. 227. NetHackQtKeyBuffer& keysource; 228. 229. public: 230. NetHackQtExtCmdRequestor(NetHackQtKeyBuffer& ks); 231. int get(); 232. 233. private slots: 234. void cancel(); 235. void done(int i); 236. }; 237. 238. 239. class NetHackQtWindow { 240. public: 241. NetHackQtWindow(); 242. virtual ~NetHackQtWindow(); 243. 244. virtual QWidget* Widget() =0; 245. 246. virtual void Clear(); 247. virtual void Display(bool block); 248. virtual bool Destroy(); 249. virtual void CursorTo(int x,int y); 250. virtual void PutStr(int attr, const char* text); 251. virtual void StartMenu(); 252. virtual void AddMenu(int glyph, const ANY_P* identifier, char ch, char gch, int attr, 253. const char* str, bool presel); 254. virtual void EndMenu(const char* prompt); 255. virtual int SelectMenu(int how, MENU_ITEM_P **menu_list); 256. virtual void ClipAround(int x,int y); 257. virtual void PrintGlyph(int x,int y,int glyph); 258. virtual void UseRIP(int how); 259. 260. int nhid; 261. }; 262. 263. class NetHackQtGlyphs { 264. public: 265. NetHackQtGlyphs(); 266. 267. int width() const { return size.width(); } 268. int height() const { return size.height(); } 269. void toggleSize(); 270. void setSize(int w, int h); 271. 272. void drawGlyph(QPainter&, int glyph, int pixelx, int pixely); 273. void drawCell(QPainter&, int glyph, int cellx, int celly); 274. 275. private: 276. QImage img; 277. QPixmap pm,pm1, pm2; 278. QSize size; 279. int tiles_per_row; 280. }; 281. 282. class BlackScrollView : public QScrollView { 283. public: 284. BlackScrollView() 285. { 286. viewport()->setBackgroundColor(black); 287. } 288. }; 289. 290. class NetHackQtMapWindow : public QWidget, public NetHackQtWindow { 291. Q_OBJECT 292. private: 293. NetHackQtClickBuffer& clicksink; 294. unsigned short glyph[ROWNO][COLNO]; 295. unsigned short& Glyph(int x, int y) { return glyph[y][x]; } 296. QPoint cursor; 297. BlackScrollView viewport; 298. QPixmap pet_annotation; 299. Clusterizer change; 300. QFont *rogue_font; 301. QString messages; 302. QRect messages_rect; 303. 304. void Changed(int x,int y); 305. 306. signals: 307. void resized(); 308. 309. private slots: 310. void updateTiles(); 311. void moveMessages(int x, int y); 312. 313. protected: 314. virtual void paintEvent(QPaintEvent*); 315. virtual void mousePressEvent(QMouseEvent*); 316. 317. public: 318. NetHackQtMapWindow(NetHackQtClickBuffer& click_sink); 319. ~NetHackQtMapWindow(); 320. 321. virtual QWidget* Widget(); 322. virtual bool Destroy(); 323. 324. virtual void Clear(); 325. virtual void Display(bool block); 326. virtual void CursorTo(int x,int y); 327. virtual void PutStr(int attr, const char* text); 328. virtual void ClipAround(int x,int y); 329. virtual void PrintGlyph(int x,int y,int glyph); 330. 331. void Scroll(int dx, int dy); 332. 333. // For messages 334. void displayMessages(bool block); 335. void putMessage(int attr, const char* text); 336. void clearMessages(); 337. 338. void clickCursor(); 339. }; 340. 341. class NetHackQtScrollText; 342. class NetHackQtMessageWindow : QObject, public NetHackQtWindow { 343. Q_OBJECT 344. public: 345. NetHackQtMessageWindow(); 346. ~NetHackQtMessageWindow(); 347. 348. virtual QWidget* Widget(); 349. virtual void Clear(); 350. virtual void Display(bool block); 351. virtual void PutStr(int attr, const char* text); 352. 353. void Scroll(int dx, int dy); 354. 355. void setMap(NetHackQtMapWindow*); 356. 357. private: 358. NetHackQtScrollText* list; 359. bool changed; 360. NetHackQtMapWindow* map; 361. 362. private slots: 363. void updateFont(); 364. }; 365. 366. class NetHackQtLabelledIcon : public QWidget { 367. public: 368. NetHackQtLabelledIcon(QWidget* parent, const char* label); 369. NetHackQtLabelledIcon(QWidget* parent, const char* label, const QPixmap& icon); 370. 371. enum { NoNum=-99999 }; 372. void setLabel(const char*, bool lower=TRUE); // a string 373. void setLabel(const char*, long, const char* tail=""); // a number 374. void setLabel(const char*, long show_value, long comparative_value, const char* tail=""); 375. void setIcon(const QPixmap&); 376. virtual void setFont(const QFont&); 377. 378. void highlightWhenChanging(); 379. void lowIsGood(); 380. void dissipateHighlight(); 381. 382. virtual void show(); 383. 384. protected: 385. void resizeEvent(QResizeEvent*); 386. 387. private: 388. void initHighlight(); 389. void setAlignments(); 390. void highlight(const QPalette& highlight); 391. void unhighlight(); 392. 393. bool low_is_good; 394. int prev_value; 395. int turn_count; /* last time the value changed */ 396. QPalette hl_good; 397. QPalette hl_bad; 398. 399. QLabel* label; 400. QLabel* icon; 401. }; 402. 403. class NetHackQtStatusWindow : QWidget, public NetHackQtWindow { 404. Q_OBJECT 405. public: 406. NetHackQtStatusWindow(); 407. 408. virtual QWidget* Widget(); 409. 410. virtual void Clear(); 411. virtual void Display(bool block); 412. virtual void CursorTo(int x,int y); 413. virtual void PutStr(int attr, const char* text); 414. 415. void fadeHighlighting(); 416. 417. protected: 418. void resizeEvent(QResizeEvent*); 419. 420. private slots: 421. void doUpdate(); 422. 423. private: 424. enum { hilight_time=1 }; 425. 426. QPixmap p_str; 427. QPixmap p_dex; 428. QPixmap p_con; 429. QPixmap p_int; 430. QPixmap p_wis; 431. QPixmap p_cha; 432. 433. QPixmap p_chaotic; 434. QPixmap p_neutral; 435. QPixmap p_lawful; 436. 437. QPixmap p_satiated; 438. QPixmap p_hungry; 439. 440. QPixmap p_confused; 441. QPixmap p_sick_fp; 442. QPixmap p_sick_il; 443. QPixmap p_blind; 444. QPixmap p_stunned; 445. QPixmap p_hallu; 446. 447. QPixmap p_encumber[5]; 448. 449. NetHackQtLabelledIcon name; 450. NetHackQtLabelledIcon dlevel; 451. 452. NetHackQtLabelledIcon str; 453. NetHackQtLabelledIcon dex; 454. NetHackQtLabelledIcon con; 455. NetHackQtLabelledIcon intel; 456. NetHackQtLabelledIcon wis; 457. NetHackQtLabelledIcon cha; 458. 459. NetHackQtLabelledIcon gold; 460. NetHackQtLabelledIcon hp; 461. NetHackQtLabelledIcon power; 462. NetHackQtLabelledIcon ac; 463. NetHackQtLabelledIcon level; 464. NetHackQtLabelledIcon exp; 465. NetHackQtLabelledIcon align; 466. 467. NetHackQtLabelledIcon time; 468. NetHackQtLabelledIcon score; 469. 470. NetHackQtLabelledIcon hunger; 471. NetHackQtLabelledIcon confused; 472. NetHackQtLabelledIcon sick_fp; 473. NetHackQtLabelledIcon sick_il; 474. NetHackQtLabelledIcon blind; 475. NetHackQtLabelledIcon stunned; 476. NetHackQtLabelledIcon hallu; 477. NetHackQtLabelledIcon encumber; 478. 479. QFrame hline1; 480. QFrame hline2; 481. QFrame hline3; 482. 483. int cursy; 484. 485. bool first_set; 486. 487. void nullOut(); 488. void updateStats(); 489. void checkTurnEvents(); 490. }; 491. 492. class NetHackQtMenuDialog : public QDialog { 493. Q_OBJECT 494. public: 495. NetHackQtMenuDialog(); 496. 497. void Accept(); 498. void Reject(); 499. void SetResult(int); 500. 501. virtual void done(int); 502. 503. protected: 504. void resizeEvent(QResizeEvent*); 505. 506. signals: 507. void Resized(); 508. }; 509. 510. 511. class NetHackQtMenuWindow : public QTableView, public NetHackQtWindow { 512. Q_OBJECT 513. public: 514. NetHackQtMenuWindow(NetHackQtKeyBuffer&); 515. ~NetHackQtMenuWindow(); 516. 517. virtual QWidget* Widget(); 518. 519. virtual void StartMenu(); 520. virtual void AddMenu(int glyph, const ANY_P* identifier, char ch, char gch, int attr, 521. const char* str, bool presel); 522. virtual void EndMenu(const char* prompt); 523. virtual int SelectMenu(int how, MENU_ITEM_P **menu_list); 524. 525. public slots: 526. void All(); 527. void ChooseNone(); 528. void Invert(); 529. void Search(); 530. 531. void Layout(); 532. void ToggleSelect(int); 533. 534. protected: 535. virtual void keyPressEvent(QKeyEvent*); 536. //virtual void mouseDoubleClickEvent(QMouseEvent*); 537. virtual void mousePressEvent(QMouseEvent*); 538. virtual void mouseReleaseEvent(QMouseEvent*); 539. virtual void mouseMoveEvent(QMouseEvent*); 540. virtual void focusOutEvent(QFocusEvent*); 541. virtual void focusInEvent(QFocusEvent*); 542. 543. virtual void paintCell(QPainter*, int, int); 544. virtual int cellWidth(int col); 545. 546. private: 547. struct MenuItem { 548. MenuItem(); 549. ~MenuItem(); 550. 551. int glyph; 552. ANY_P identifier; 553. int attr; 554. const char* str; 555. int count; 556. char ch; 557. bool selected; 558. 559. bool Selectable() const { return identifier.a_void!=0; } 560. }; 561. 562. QArray<MenuItem> item; 563. 564. int itemcount; 565. int str_width; 566. bool str_fixed; 567. int next_accel; 568. 569. NetHackQtKeyBuffer& keysource; 570. 571. NetHackQtMenuDialog* dialog; 572. 573. QPushButton* ok; 574. QPushButton* cancel; 575. QPushButton* all; 576. QPushButton* none; 577. QPushButton* invert; 578. QPushButton* search; 579. QLabel prompt; 580. 581. int how; 582. 583. bool has_glyphs; 584. 585. int pressed; 586. bool was_sel; 587. }; 588. 589. class NetHackQtTextListBox; 590. 591. class NetHackQtRIP : public QWidget { 592. private: 593. static QPixmap* pixmap; 594. char** line; 595. int riplines; 596. 597. public: 598. NetHackQtRIP(QWidget* parent); 599. 600. void setLines(char** l, int n); 601. 602. protected: 603. virtual void paintEvent(QPaintEvent* event); 604. QSize sizeHint() const; 605. }; 606. 607. 608. class NetHackQtTextWindow : public QDialog, public NetHackQtWindow { 609. Q_OBJECT 610. public: 611. NetHackQtTextWindow(NetHackQtKeyBuffer&); 612. ~NetHackQtTextWindow(); 613. 614. virtual QWidget* Widget(); 615. 616. virtual void Clear(); 617. virtual bool Destroy(); 618. virtual void Display(bool block); 619. virtual void PutStr(int attr, const char* text); 620. virtual void UseRIP(int how); 621. 622. public slots: 623. void Search(); 624. 625. protected: 626. virtual void done(int); 627. virtual void keyPressEvent(QKeyEvent*); 628. 629. private slots: 630. void doUpdate(); 631. 632. private: 633. NetHackQtKeyBuffer& keysource; 634. 635. bool use_rip; 636. bool str_fixed; 637. 638. QPushButton ok; 639. QPushButton search; 640. NetHackQtTextListBox* lines; 641. 642. NetHackQtRIP rip; 643. }; 644. 645. class NetHackQtMenuOrTextWindow : public NetHackQtWindow { 646. private: 647. NetHackQtWindow* actual; 648. NetHackQtKeyBuffer& keysource; 649. 650. public: 651. NetHackQtMenuOrTextWindow(NetHackQtKeyBuffer&); 652. 653. virtual QWidget* Widget(); 654. 655. // Text 656. virtual void Clear(); 657. virtual bool Destroy(); 658. virtual void Display(bool block); 659. virtual void PutStr(int attr, const char* text); 660. 661. // Menu 662. virtual void StartMenu(); 663. virtual void AddMenu(int glyph, const ANY_P* identifier, char ch, char gch, int attr, 664. const char* str, bool presel); 665. virtual void EndMenu(const char* prompt); 666. virtual int SelectMenu(int how, MENU_ITEM_P **menu_list); 667. 668. }; 669. 670. class NetHackQtDelay : QObject { 671. private: 672. int msec; 673. 674. public: 675. NetHackQtDelay(int ms); 676. void wait(); 677. virtual void timerEvent(QTimerEvent* timer); 678. }; 679. 680. 681. class NetHackQtInvUsageWindow : public QWidget { 682. public: 683. NetHackQtInvUsageWindow(QWidget* parent); 684. virtual void paintEvent(QPaintEvent*); 685. private: 686. void drawWorn(QPainter& painter, obj*, int x, int y, bool canbe=TRUE); 687. }; 688. 689. // This class is the main widget for NetHack 690. // 691. // It is a collection of Message, Map, and Status windows. In the current 692. // version of nethack there is only one of each, and this class makes this 693. // assumption, not showing itself until all are inserted. 694. // 695. // This class simply knows how to layout such children sensibly. 696. // 697. // Since it is only responsible for layout, the class does not 698. // note the actual class of the windows. 699. // 700. #ifndef KDE 701. #include "qt_kde0.h" 702. #endif 703. 704. class NetHackQtMainWindow : public KTopLevelWidget { 705. Q_OBJECT 706. public: 707. NetHackQtMainWindow(NetHackQtKeyBuffer&); 708. 709. void AddMessageWindow(NetHackQtMessageWindow* window); 710. void AddMapWindow(NetHackQtMapWindow* window); 711. void AddStatusWindow(NetHackQtStatusWindow* window); 712. void RemoveWindow(NetHackQtWindow* window); 713. void updateInventory(); 714. 715. void fadeHighlighting(); 716. 717. public slots: 718. void doMenuItem(int); 719. void doKeys(const QString&); 720. 721. protected: 722. virtual void resizeEvent(QResizeEvent*); 723. virtual void keyPressEvent(QKeyEvent*); 724. virtual void keyReleaseEvent(QKeyEvent* event); 725. virtual void closeEvent(QCloseEvent*); 726. 727. private slots: 728. void layout(); 729. void raiseMap(); 730. void zoomMap(); 731. void raiseMessages(); 732. void raiseStatus(); 733. 734. private: 735. void ShowIfReady(); 736. 737. #ifdef KDE 738. KMenuBar* menubar; 739. #else 740. QMenuBar* menubar; 741. #endif 742. NetHackQtMessageWindow* message; 743. NetHackQtMapWindow* map; 744. NetHackQtStatusWindow* status; 745. NetHackQtInvUsageWindow* invusage; 746. 747. NetHackQtKeyBuffer& keysink; 748. QWidgetStack* stack; 749. int dirkey; 750. 751. const char* *macro; 752. }; 753. 754. class NetHackQtYnDialog : QDialog { 755. Q_OBJECT 756. private: 757. const char* question; 758. const char* choices; 759. char def; 760. NetHackQtKeyBuffer& keysource; 761. 762. protected: 763. virtual void keyPressEvent(QKeyEvent*); 764. virtual void done(int); 765. 766. private slots: 767. void doneItem(int); 768. 769. public: 770. NetHackQtYnDialog(NetHackQtKeyBuffer& keysource,const char*,const char*,char); 771. 772. char Exec(); 773. }; 774. 775. #ifdef KDE 776. #define NetHackQtBindBase KApplication 777. #elif defined(QWS) 778. #define NetHackQtBindBase QPEApplication 779. #else 780. #define NetHackQtBindBase QApplication 781. #endif 782. 783. class NetHackQtBind : NetHackQtBindBase { 784. private: 785. // Single-instance preservation... 786. NetHackQtBind(int& argc, char** argv); 787. 788. static NetHackQtBind* instance; 789. 790. static NetHackQtKeyBuffer keybuffer; 791. static NetHackQtClickBuffer clickbuffer; 792. 793. static QWidget* splash; 794. static NetHackQtMainWindow* main; 795. 796. public: 797. static void qt_init_nhwindows(int* argc, char** argv); 798. static void qt_player_selection(); 799. static void qt_askname(); 800. static void qt_get_nh_event(); 801. static void qt_exit_nhwindows(const char *); 802. static void qt_suspend_nhwindows(const char *); 803. static void qt_resume_nhwindows(); 804. static winid qt_create_nhwindow(int type); 805. static void qt_clear_nhwindow(winid wid); 806. static void qt_display_nhwindow(winid wid, BOOLEAN_P block); 807. static void qt_destroy_nhwindow(winid wid); 808. static void qt_curs(winid wid, int x, int y); 809. static void qt_putstr(winid wid, int attr, const char *text); 810. static void qt_display_file(const char *filename, BOOLEAN_P must_exist); 811. static void qt_start_menu(winid wid); 812. static void qt_add_menu(winid wid, int glyph, 813. const ANY_P * identifier, CHAR_P ch, CHAR_P gch, int attr, 814. const char *str, BOOLEAN_P presel); 815. static void qt_end_menu(winid wid, const char *prompt); 816. static int qt_select_menu(winid wid, int how, MENU_ITEM_P **menu_list); 817. static void qt_update_inventory(); 818. static void qt_mark_synch(); 819. static void qt_wait_synch(); 820. 821. static void qt_cliparound(int x, int y); 822. static void qt_cliparound_window(winid wid, int x, int y); 823. static void qt_print_glyph(winid wid,XCHAR_P x,XCHAR_P y,int glyph); 824. static void qt_raw_print(const char *str); 825. static void qt_raw_print_bold(const char *str); 826. static int qt_nhgetch(); 827. static int qt_nh_poskey(int *x, int *y, int *mod); 828. static void qt_nhbell(); 829. static int qt_doprev_message(); 830. static char qt_yn_function(const char *question, const char *choices, CHAR_P def); 831. static void qt_getlin(const char *prompt, char *line); 832. static int qt_get_ext_cmd(); 833. static void qt_number_pad(int); 834. static void qt_delay_output(); 835. static void qt_start_screen(); 836. static void qt_end_screen(); 837. 838. static void qt_outrip(winid wid, int how); 839. static int qt_kbhit(); 840. 841. private: 842. virtual bool notify(QObject *receiver, QEvent *event); 843. }; 844. 845. #endif