<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                #(54):剪貼板 剪貼板的操作經常和前面所說的拖放技術在一起使用。大家對剪貼板都很熟悉。我們可以簡單地把它理解成一個數據存儲池,外面的數據可以存進去,里面數據也可以取出來。剪貼板是由操作系統維護的,所以這提供了跨應用程序的數據交互的一種方式。Qt 已經為我們封裝好很多關于剪貼板的操作,我們可以在自己的應用中很容易實現對剪貼板的支持,代碼實現起來也是很簡單的: ~~~ class ClipboardDemo : public QWidget { Q_OBJECT public: ClipboardDemo(QWidget *parent = 0); private slots: void setClipboardContent(); void getClipboardContent(); }; ~~~ 我們定義了一個`ClipboardDemo`類。這個類只有兩個槽函數,一個是從剪貼板獲取內容,一個是給剪貼板設置內容。 ~~~ ClipboardDemo::ClipboardDemo(QWidget *parent) : QWidget(parent) { QVBoxLayout *mainLayout = new QVBoxLayout(this); QHBoxLayout *northLayout = new QHBoxLayout; QHBoxLayout *southLayout = new QHBoxLayout; QTextEdit *editor = new QTextEdit; QLabel *label = new QLabel; label->setText("Text Input: "); label->setBuddy(editor); QPushButton *copyButton = new QPushButton; copyButton->setText("Set Clipboard"); QPushButton *pasteButton = new QPushButton; pasteButton->setText("Get Clipboard"); northLayout->addWidget(label); northLayout->addWidget(editor); southLayout->addWidget(copyButton); southLayout->addWidget(pasteButton); mainLayout->addLayout(northLayout); mainLayout->addLayout(southLayout); connect(copyButton, SIGNAL(clicked()), this, SLOT(setClipboardContent())); connect(pasteButton, SIGNAL(clicked()), this, SLOT(getClipboardContent())); } ~~~ 主界面也很簡單:程序分為上下兩行,上一行顯示一個文本框,下一行是兩個按鈕,分別為設置剪貼板和讀取剪貼板。最主要的代碼還是在兩個槽函數中: ~~~ void ClipboardDemo::setClipboardContent() { QClipboard *board = QApplication::clipboard(); board->setText("Text from Qt Application"); } void ClipboardDemo::getClipboardContent() { QClipboard *board = QApplication::clipboard(); QString str = board->text(); QMessageBox::information(NULL, "From clipboard", str); } ~~~ 槽函數也很簡單。我們使用`QApplication::clipboard()`函數獲得系統剪貼板對象。這個函數的返回值是`QClipboard`指針。我們可以從這個類的 API 中看到,通過`setText()`,`setImage()`或者`setPixmap()`函數可以將數據放置到剪貼板內,也就是通常所說的剪貼或者復制的操作;使用`text()`,`image()`或者`pixmap()`函數則可以從剪貼板獲得數據,也就是粘貼。 另外值得說的是,通過上面的例子可以看出,`QTextEdit`默認就支持 Ctrl+C, Ctrl+V 等快捷鍵操作的。不僅如此,很多 Qt 的組件都提供了很方便的操作,因此我們需要從文檔中獲取具體的信息,從而避免自己重新去發明輪子。 `QClipboard`提供的數據類型很少,如果需要,我們可以繼承`QMimeData`類,通過調用`setMimeData()`函數讓剪貼板能夠支持我們自己的數據類型。具體實現我們已經在前面的章節中有過介紹,這里不再贅述。 在 X11 系統中,鼠標中鍵(一般是滾輪)可以支持剪貼操作。為了實現這一功能,我們需要向`QClipboard::text()`函數傳遞`QClipboard::Selection`參數。例如,我們在鼠標按鍵釋放的事件中進行如下處理: ~~~ void MyTextEditor::mouseReleaseEvent(QMouseEvent *event) { QClipboard *clipboard = QApplication::clipboard(); if (event->button() == Qt::MidButton && clipboard->supportsSelection()) { QString text = clipboard->text(QClipboard::Selection); pasteText(text); } } ~~~ 這里的`supportsSelection()`函數在 X11 平臺返回 true,其余平臺都是返回 false。這樣,我們便可以為 X11 平臺提供額外的操作。 另外,`QClipboard`提供了`dataChanged()`信號,以便監聽剪貼板數據變化。
                  <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>

                              哎呀哎呀视频在线观看