<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Qt4 中的第一個程序 > 原文: [http://zetcode.com/gui/qt4/firstprograms/](http://zetcode.com/gui/qt4/firstprograms/) 在 Qt4 C++ 編程教程的這一部分中,我們創建了第一個程序。 我們顯示一個應用圖標,一個工具提示和各種鼠標光標。 我們在屏幕上居中放置一個窗口,并介紹信號和槽機制。 ## 簡單的例子 我們從一個非常簡單的例子開始。 `simple.cpp` ```cpp #include <QApplication> #include <QWidget> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; window.resize(250, 150); window.setWindowTitle("Simple example"); window.show(); return app.exec(); } ``` 該示例在屏幕上顯示一個基本窗口。 ```cpp #include <QApplication> #include <QWidget> ``` 我們包括必要的頭文件。 ```cpp QApplication app(argc, argv); ``` 這是應用對象。 每個 Qt4 應用都必須創建此對象。 (控制臺應用除外。) ```cpp QWidget window; ``` 這是我們的主要小部件。 ```cpp window.resize(250, 150); window.setWindowTitle("Simple example"); window.show(); ``` 在這里,我們調整窗口小部件的大小并為我們的主窗口設置標題。 在這種情況下,`QWidget`是我們的主窗口。 最后,我們在屏幕上顯示小部件。 ```cpp return app.exec(); ``` `exec()`方法啟動應用的主循環。 ![Simple example](https://img.kancloud.cn/24/aa/24aadd0240e978e0f93a92e1c265c6cb_252x176.jpg) 圖:簡單 example ## 使窗口居中 如果我們不自己定位窗口,則窗口管理器將為我們定位。 在下一個示例中,我們將窗口居中。 `center.cpp` ```cpp #include <QApplication> #include <QDesktopWidget> #include <QWidget> int main(int argc, char *argv[]) { int WIDTH = 250; int HEIGHT = 150; int screenWidth; int screenHeight; int x, y; QApplication app(argc, argv); QWidget window; QDesktopWidget *desktop = QApplication::desktop(); screenWidth = desktop->width(); screenHeight = desktop->height(); x = (screenWidth - WIDTH) / 2; y = (screenHeight - HEIGHT) / 2; window.resize(WIDTH, HEIGHT); window.move( x, y ); window.setWindowTitle("Center"); window.show(); return app.exec(); } ``` 監視器大小和分辨率類型很多。 為了使窗口居中,我們必須確定桌面的寬度和高度。 為此,我們使用`QDesktopWidget`類。 ```cpp QDesktopWidget *desktop = QApplication::desktop(); screenWidth = desktop->width(); screenHeight = desktop->height(); ``` 在這里,我們確定屏幕的寬度和高度。 ```cpp x = (screenWidth - WIDTH) / 2; y = (screenHeight - HEIGHT) / 2; ``` 在這里,我們計算中心窗口的左上點。 ```cpp window.resize(WIDTH, HEIGHT); window.move( x, y ); ``` 我們調整窗口小部件的大小并將其移動到計算的位置。 請注意,我們必須首先調整窗口小部件的大小。 之后我們將其移動。 ## 工具提示 工具提示是有關應用中項目的特定提示。 以下示例將演示如何在 Qt4 編程庫中創建工具提示。 `tooltip.cpp` ```cpp #include <QApplication> #include <QWidget> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; window.resize(250, 150); window.move(300, 300); window.setWindowTitle("ToolTip"); window.setToolTip("QWidget"); window.show(); return app.exec(); } ``` 該示例顯示了主`QWidget`的工具提示。 ```cpp window.setWindowTitle("ToolTip"); ``` 我們使用`setToolTip()`方法為`QWidget`小部件設置了工具提示。 ![A tooltip](https://img.kancloud.cn/9f/32/9f32121d0ceb2c7c41636992ac25ad3f_252x176.jpg) 圖:工具提示 ## 應用圖標 在下一個示例中,我們顯示應用圖標。 大多數窗口管理器在標題欄的左上角以及任務欄上都顯示圖標。 `icon.cpp` ```cpp #include <QApplication> #include <QWidget> #include <QIcon> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; window.resize(250, 150); window.setWindowTitle("Icon"); window.setWindowIcon(QIcon("web.png")); window.show(); return app.exec(); } ``` 窗口左上角顯示一個圖標。 ```cpp window.setWindowIcon(QIcon("web.png")); ``` 為了顯示圖標,我們使用`setWindowIcon()`方法和`QIcon`類。 該圖標是位于當前工作目錄中的一個小 PNG 文件。 ![Icon](https://img.kancloud.cn/59/3b/593bc938441d4558b251166d4e9e66dc_252x176.jpg) 圖:圖標 ## 游標 光標是一個小圖標,指示鼠標指針的位置。 在下一個示例中,將顯示我們可以在程序中使用的各種游標。 `cursors.cpp` ```cpp #include <QApplication> #include <QWidget> #include <QFrame> #include <QGridLayout> class Cursors : public QWidget { public: Cursors(QWidget *parent = 0); }; Cursors::Cursors(QWidget *parent) : QWidget(parent) { QFrame *frame1 = new QFrame(this); frame1->setFrameStyle(QFrame::Box); frame1->setCursor(Qt::SizeAllCursor); QFrame *frame2 = new QFrame(this); frame2->setFrameStyle(QFrame::Box); frame2->setCursor(Qt::WaitCursor); QFrame *frame3 = new QFrame(this); frame3->setFrameStyle(QFrame::Box); frame3->setCursor(Qt::PointingHandCursor); QGridLayout *grid = new QGridLayout(this); grid->addWidget(frame1, 0, 0); grid->addWidget(frame2, 0, 1); grid->addWidget(frame3, 0, 2); setLayout(grid); } int main(int argc, char *argv[]) { QApplication app(argc, argv); Cursors window; window.resize(350, 150); window.setWindowTitle("Cursors"); window.show(); return app.exec(); } ``` 在此示例中,我們使用三個框架。 每個幀都有一個不同的光標集。 ```cpp QFrame *frame1 = new QFrame(this); ``` `QFrame`小部件已創建。 ```cpp frame1->setFrameStyle(QFrame::Box); ``` 我們使用`setFrameStyle()`方法設置框架樣式。 這樣我們可以看到框架的邊界。 ```cpp frame1->setCursor(Qt::SizeAllCursor); ``` 使用`setCursor()`方法將光標設置到該幀。 ```cpp QGridLayout *grid = new QGridLayout(this); grid->addWidget(frame1, 0, 0); grid->addWidget(frame2, 0, 1); grid->addWidget(frame3, 0, 2); setLayout(grid); ``` 這會將所有幀分組為一行。 我們將在布局管理一章中詳細討論這一點。 ## `QButton` 在下一個代碼示例中,我們在窗口上顯示一個按鈕。 通過單擊按鈕,我們關閉應用。 `pushbutton.cpp` ```cpp #include <QApplication> #include <QWidget> #include <QPushButton> class MyButton : public QWidget { public: MyButton(QWidget *parent = 0); }; MyButton::MyButton(QWidget *parent) : QWidget(parent) { QPushButton *quitBtn = new QPushButton("Quit", this); quitBtn->setGeometry(50, 40, 75, 30); connect(quitBtn, SIGNAL(clicked()), qApp, SLOT(quit())); } int main(int argc, char *argv[]) { QApplication app(argc, argv); MyButton window; window.resize(250, 150); window.setWindowTitle("QPushButton"); window.show(); return app.exec(); } ``` 在此代碼示例中,我們首次使用信號和槽的概念。 ```cpp QPushButton *quitBtn = new QPushButton("Quit", this); quitBtn->setGeometry(50, 40, 75, 30); ``` 我們創建一個新的`QPushButton`。 我們手動調整其大小,然后使用`setGeometry()`方法將其放置在窗口中。 ```cpp connect(quitBtn, SIGNAL(clicked()), qApp, SLOT(quit())); ``` 當我們點擊按鈕時,會產生一個`clicked()`信號。 `slot`是對信號做出反應的方法。 在我們的情況下,它是主應用對象的`quit()`槽。 `qApp`是指向應用對象的全局指針。 它在`QApplication`頭文件中定義。 ![A button](https://img.kancloud.cn/84/69/8469db6162fd1712bc8f9ebc81da8c9c_252x176.jpg) 圖:`QPushButton` ## `PlusMinus` 我們將在本節完成,展示小部件如何進行通信。 該代碼分為三個文件。 `plusminus.h` ```cpp #pragma once #include <QWidget> #include <QApplication> #include <QPushButton> #include <QLabel> class PlusMinus : public QWidget { Q_OBJECT public: PlusMinus(QWidget *parent = 0); private slots: void OnPlus(); void OnMinus(); private: QLabel *lbl; }; ``` 這是示例的頭文件。 在此文件中,我們定義了兩個槽和一個標簽小部件。 ```cpp class PlusMinus : public QWidget { Q_OBJECT ... ``` `Q_OBJECT`宏必須包含在聲明自己的信號和槽的類中。 `plusminus.cpp` ```cpp #include "plusminus.h" #include <QGridLayout> PlusMinus::PlusMinus(QWidget *parent) : QWidget(parent) { QPushButton *plsBtn = new QPushButton("+", this); QPushButton *minBtn = new QPushButton("-", this); lbl = new QLabel("0", this); QGridLayout *grid = new QGridLayout(this); grid->addWidget(plsBtn, 0, 0); grid->addWidget(minBtn, 0, 1); grid->addWidget(lbl, 1, 1); setLayout(grid); connect(plsBtn, SIGNAL(clicked()), this, SLOT(OnPlus())); connect(minBtn, SIGNAL(clicked()), this, SLOT(OnMinus())); } void PlusMinus::OnPlus() { int val = lbl->text().toInt(); val++; lbl->setText(QString::number(val)); } void PlusMinus::OnMinus() { int val = lbl->text().toInt(); val--; lbl->setText(QString::number(val)); } ``` 我們有兩個按鈕和一個標簽小部件。 我們使用按鈕增加或減少標簽上顯示的數字。 ```cpp connect(plsBtn, SIGNAL(clicked()), this, SLOT(OnPlus())); connect(minBtn, SIGNAL(clicked()), this, SLOT(OnMinus())); ``` 在這里,我們將`clicked()`信號連接到槽。 ```cpp void PlusMinus::OnPlus() { int val = lbl->text().toInt(); val++; lbl->setText(QString::number(val)); } ``` 在`OnPlus()`方法中,我們確定標簽的當前值。 標簽窗口小部件顯示一個字符串值,因此我們必須將其轉換為整數。 我們增加數量并為標簽設置新的文本。 我們將數字轉換為字符串值。 `main.cpp` ```cpp #include "plusminus.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); PlusMinus window; window.resize(300, 190); window.setWindowTitle("Plus minus"); window.show(); return app.exec(); } ``` 這是代碼示例的主文件。 ![Plus minus](https://img.kancloud.cn/48/e8/48e853ad0d3eeee6da474843233caacf_302x216.jpg) 圖:正負 在本章中,我們在 Qt4 中創建了第一個程序。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看