• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Cpper
            C/C++高級(jí)工程師 Android高級(jí)軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語(yǔ)言 程序猿
            QT學(xué)習(xí)筆記-8.查找文件對(duì)話框

            只所以選擇這個(gè)QT自帶的例子有2個(gè)原因
            1是界面簡(jiǎn)單容易理解
            2是當(dāng)點(diǎn)擊more按鍵會(huì)動(dòng)態(tài)改變窗體出現(xiàn)高級(jí)選項(xiàng)(我想知道這個(gè)是如何做到的)

            基本代碼如下:
            #ifndef FINDDIALOG_H
            #define FINDDIALOG_H

            #include 
            <QDialog>

            QT_BEGIN_NAMESPACE
            class QCheckBox;
            class QDialogButtonBox;
            class QGroupBox;
            class QLabel;
            class QLineEdit;
            class QPushButton;
            QT_END_NAMESPACE

            class FindDialog : public QDialog
            {
                Q_OBJECT

            public:
                FindDialog(QWidget 
            *parent = 0);

            private:
                QLabel 
            *label;
                QLineEdit 
            *lineEdit;
                QCheckBox 
            *caseCheckBox;
                QCheckBox 
            *fromStartCheckBox;
                QCheckBox 
            *wholeWordsCheckBox;
                QCheckBox 
            *searchSelectionCheckBox;
                QCheckBox 
            *backwardCheckBox;
                QDialogButtonBox 
            *buttonBox;
                QPushButton 
            *findButton;
                QPushButton 
            *moreButton;
                QWidget 
            *extension;
            };

            #endif

            .cpp
            #include 
            <QtGui>
            #include 
            "finddialog.h"

            FindDialog::FindDialog(QWidget 
            *parent)
                : QDialog(parent)
            {
                label 
            = new QLabel(tr("Find &what:"));
                lineEdit 
            = new QLineEdit;
                
            //! 這個(gè)成員函數(shù)的作用是當(dāng)點(diǎn)擊控件快捷鍵則把響應(yīng)發(fā)送到Buddy控件
                label->setBuddy(lineEdit);

                caseCheckBox 
            = new QCheckBox(tr("Match &case"));
                fromStartCheckBox 
            = new QCheckBox(tr("Search from &start"));
                fromStartCheckBox
            ->setChecked(true);

                findButton 
            = new QPushButton(tr("&Find"));
                findButton
            ->setDefault(true);

                moreButton 
            = new QPushButton(tr("&More"));
                moreButton
            ->setCheckable(true);

                
            //moreButton->setAutoDefault(false);

                
            //! 又是對(duì)話框按鈕盒,不過這次使用和上次有點(diǎn)區(qū)別 其子按鈕是加上去的
                buttonBox = new QDialogButtonBox(Qt::Vertical);
                buttonBox
            ->addButton(findButton, QDialogButtonBox::ActionRole);
                buttonBox
            ->addButton(moreButton, QDialogButtonBox::ActionRole);

                extension 
            = new QWidget;

                wholeWordsCheckBox 
            = new QCheckBox(tr("&Whole words"));
                backwardCheckBox 
            = new QCheckBox(tr("Search &backward"));
                searchSelectionCheckBox 
            = new QCheckBox(tr("Search se&lection"));

                
            //! 綁定時(shí)間(需要注意的是SINGLA,SLOT中的函數(shù)必須是形式完備的)
                connect(moreButton, SIGNAL(toggled(bool)), extension, SLOT(setVisible(bool)));

                
            //! 擴(kuò)展控件部分(使用QVBox布局)
                QVBoxLayout *extensionLayout = new QVBoxLayout;
                extensionLayout
            ->setMargin(0);
                extensionLayout
            ->addWidget(wholeWordsCheckBox);
                extensionLayout
            ->addWidget(backwardCheckBox);
                extensionLayout
            ->addWidget(searchSelectionCheckBox);
                extension
            ->setLayout(extensionLayout);

                
            //! 文本框和搜索鍵
                QHBoxLayout *topLeftLayout = new QHBoxLayout;
                topLeftLayout
            ->addWidget(label);
                topLeftLayout
            ->addWidget(lineEdit);

                
            //! 輔助控件組
                QVBoxLayout *leftLayout = new QVBoxLayout;
                leftLayout
            ->addLayout(topLeftLayout);
                leftLayout
            ->addWidget(caseCheckBox);
                leftLayout
            ->addWidget(fromStartCheckBox);
                leftLayout
            ->addStretch(1);

                
            //! 主布局使用格子管理器
                QGridLayout *mainLayout = new QGridLayout;
                
            //! 設(shè)置大小不能更改
                mainLayout->setSizeConstraint(QLayout::SetFixedSize);
                
            //! 把LeftLayout管理器放在左上角即0,0位置處
                mainLayout->addLayout(leftLayout, 00);
                mainLayout
            ->addWidget(buttonBox, 01);
                mainLayout
            ->addWidget(extension, 10);
                setLayout(mainLayout);

                setWindowTitle(tr(
            "Extension"));

                extension
            ->setVisible(false);
            }


            需要說明的是
            #include <QtGui>是包含所有的GUI控件頭文件
            我們不再需要
            #include <QLabel>
            #include <QEdit>

            不過看看代碼還真應(yīng)了那句話復(fù)雜界面都是布局管理器堆積出來的
            另外注意這句話
            mainLayout->addWidget(extension, 1, 0);
            把extension放在格子管理器的1,0位置
            如果注銷掉這句話可以看看出來的界面是什么樣子的

            最后要說的就是extension->setVisible(false);
            在開始我們把exntension控件設(shè)置為隱藏狀態(tài)
            當(dāng)然也可以使用函數(shù)hide().
            由于之前綁定了more按鍵和extension,
            我們就可以通過點(diǎn)擊more按鍵來顯示和隱藏extension控件了
            posted on 2011-03-17 20:55 ccsdu2009 閱讀(1523) 評(píng)論(0)  編輯 收藏 引用 所屬分類: QT編程
             
            久久se精品一区二区影院| 日韩精品久久久久久久电影| 99久久免费国产精精品| 国产叼嘿久久精品久久| 怡红院日本一道日本久久| 久久免费小视频| 亚洲Av无码国产情品久久| 久久亚洲AV成人无码国产 | 好属妞这里只有精品久久| 99久久精品免费观看国产| 久久久精品国产免大香伊| 麻豆精品久久精品色综合| 久久亚洲中文字幕精品一区| 91精品国产高清久久久久久91| 人人妻久久人人澡人人爽人人精品| 国产V亚洲V天堂无码久久久| 亚洲精品国产综合久久一线| 国产精品一久久香蕉国产线看| 亚洲日韩欧美一区久久久久我 | 久久人人爽人人人人爽AV| 久久午夜电影网| 成人妇女免费播放久久久| 2021久久精品免费观看| 久久久久国产亚洲AV麻豆| 天天久久狠狠色综合| 久久精品国产亚洲av水果派| 精品多毛少妇人妻AV免费久久| 国产一区二区三精品久久久无广告 | 久久久久九九精品影院| 国产精品久久久久影院嫩草| 久久久久人妻精品一区| 久久精品国产亚洲AV蜜臀色欲| 性做久久久久久久久老女人| 久久久久这里只有精品 | 99久久精品国产一区二区蜜芽| 久久综合香蕉国产蜜臀AV| 亚洲va中文字幕无码久久不卡| 久久人人爽人人爽人人爽| 久久久久亚洲AV成人网人人网站 | 久久天天躁狠狠躁夜夜96流白浆 | 国内精品伊人久久久久网站|