亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tutorial2-05.html

?? QT3.0.5的幫助文檔的中文翻譯
?? HTML
?? 第 1 頁 / 共 2 頁
字號(hào):
<a name="2-1"></a><p> <pre>    void ChartForm::init()
    {
        <a href="qwidget.html#setCaption">setCaption</a>( "Chart" );
        m_filename = <a href="qstring.html#QString-null">QString::null</a>;
        m_changed = false;

        m_elements[0]  = Element( Element::INVALID, red );
        m_elements[1]  = Element( Element::INVALID, cyan );
        m_elements[2]  = Element( Element::INVALID, blue );
</pre><tt>...</tt>
<p> 我們使用了init()函數(shù)是因?yàn)槲覀兿朐谝暣氨粯?gòu)造的時(shí)候和無論用戶載入一個(gè)存在的數(shù)據(jù)組或者創(chuàng)建一個(gè)新的數(shù)據(jù)組的時(shí)候初始化畫布和元素(在<tt>m_elements</tt> <tt>ElementVector</tt>中)。
<p> 我們重新設(shè)置標(biāo)題并設(shè)置當(dāng)前文件名稱為QString::null。我們也用無效的元素來組裝元素矢量。這不是必需的,但是給每一個(gè)元素一個(gè)不同的顏色對于用戶來講是更方便的,因?yàn)楫?dāng)他們輸入值的時(shí)候每一個(gè)都會(huì)已經(jīng)有了一個(gè)確定的顏色(當(dāng)然他們可以修改)。
<p> <h2> 文件處理動(dòng)作
</h2>
<a name="3"></a><p> <h3> okToClear()
</h3>
<a name="3-1"></a><p> <pre>    bool ChartForm::okToClear()
    {
        if ( m_changed ) {
            <a href="qstring.html">QString</a> msg;
            if ( m_filename.isEmpty() )
                msg = "Unnamed chart ";
            else
                msg = QString( "Chart '%1'\n" ).arg( m_filename );
            msg += "has been changed.";
            switch( QMessageBox::<a href="qmessagebox.html#information">information</a>( this, "Chart -- Unsaved Changes",
                                              msg, "&amp;Save", "Cancel", "&amp;Abandon",
                                              0, 1 ) ) {
                case 0:
                    fileSave();
                    break;
                case 1:
                default:
                    return false;
                    break;
                case 2:
                    break;
            }
        }

        return true;
    }
</pre>
<p> okToClear()函數(shù)用來提示用戶在有沒保存的數(shù)據(jù)的時(shí)候保存它們。它也被其它幾個(gè)函數(shù)使用。
<p> <h3> fileNew()
</h3>
<a name="3-2"></a><p> 

<pre>    void ChartForm::fileNew()
    {
        if ( okToClear() ) {
            init();
            drawElements();
        }
    }
</pre>
<p> 當(dāng)用戶調(diào)用fileNew()動(dòng)作時(shí),我們調(diào)用okToClear()來給他們一個(gè)保存任何為保存的數(shù)據(jù)的機(jī)會(huì)。無論他們保存或者放棄或者沒有任何為保存的數(shù)據(jù),我們都重新初始化元素矢量并繪制默認(rèn)圖表。
<p> <center><table cellpadding="4" cellspacing="2" border="0">
<tr bgcolor="#d0d0d0">
<td valign="top">我們是不是也應(yīng)該調(diào)用optionsSetData()來彈出一個(gè)對話框,讓用戶通過它來創(chuàng)建和編輯值、顏色等等呢?你可以運(yùn)行一下現(xiàn)在的應(yīng)用程序,然后試著把optionsSetData()的調(diào)用添加進(jìn)去后再運(yùn)行并觀察它們來決定你更喜歡哪一個(gè)。
</table></center>
<p> <h3> fileOpen()
</h3>
<a name="3-3"></a><p> <pre>    void ChartForm::fileOpen()
    {
        if ( !okToClear() )
            return;

    <a name="x2414"></a>    <a href="qstring.html">QString</a> filename = QFileDialog::<a href="qfiledialog.html#getOpenFileName">getOpenFileName</a>(
                                QString::null, "Charts (*.cht)", this,
                                "file open", "Chart -- File Open" );
    <a name="x2417"></a>    if ( !filename.<a href="qstring.html#isEmpty">isEmpty</a>() )
            load( filename );
        else
            <a href="qmainwindow.html#statusBar">statusBar</a>()-&gt;message( "File Open abandoned", 2000 );
    }
</pre>
<p> 我們檢查它是否是okToClear()。如果是的話,我們使用靜態(tài)的<a href="qfiledialog.html#getOpenFileName">QFileDialog::getOpenFileName</a>()函數(shù)來獲得用戶想要載入的文件的名稱。如果我們得到一個(gè)文件名,我們就調(diào)用load()。
<p> <h3> fileSaveAs()
</h3>
<a name="3-4"></a><p> <pre>    void ChartForm::fileSaveAs()
    {
    <a name="x2415"></a>    <a href="qstring.html">QString</a> filename = QFileDialog::<a href="qfiledialog.html#getSaveFileName">getSaveFileName</a>(
                                QString::null, "Charts (*.cht)", this,
                                "file save as", "Chart -- File Save As" );
        if ( !filename.<a href="qstring.html#isEmpty">isEmpty</a>() ) {
            int answer = 0;
    <a name="x2413"></a>        if ( QFile::<a href="qfile.html#exists">exists</a>( filename ) )
    <a name="x2416"></a>            answer = QMessageBox::<a href="qmessagebox.html#warning">warning</a>(
                                this, "Chart -- Overwrite File",
                                QString( "Overwrite\n\'%1\'?" ).
                                    arg( filename ),
                                "&amp;Yes", "&amp;No", QString::null, 1, 1 );
            if ( answer == 0 ) {
                m_filename = filename;
                updateRecentFiles( filename );
                fileSave();
                return;
            }
        }
        <a href="qmainwindow.html#statusBar">statusBar</a>()-&gt;message( "Saving abandoned", 2000 );
    }
</pre>
<p> 這個(gè)函數(shù)調(diào)用了靜態(tài)的<a href="qfiledialog.html#getSaveFileName">QFileDialog::getSaveFileName</a>()來得到一個(gè)要保存數(shù)據(jù)的文件的明處那個(gè)。如果文件存在,我們使用使用一個(gè)<a href="qmessagebox.html#warning">QMessageBox::warning</a>()來提醒用戶并給他們一個(gè)放棄保存的選擇。如果文件被保存了我們就更新最近打開的文件列表并調(diào)用fileSave()(在<a href="tutorial2-07.html">文件處理</a>中)來執(zhí)行存儲(chǔ)。
<p> <h2> 管理最近打開文件的列表
</h2>
<a name="4"></a><p> 

<pre>        <a href="qstringlist.html">QStringList</a> m_recentFiles;
</pre>
<p> 我們用一個(gè)字符串列表來處理這個(gè)最近打開文件的列表。
<p> 

<pre>    void ChartForm::updateRecentFilesMenu()
    {
        for ( int i = 0; i &lt; MAX_RECENTFILES; ++i ) {
            if ( fileMenu-&gt;<a href="qmenudata.html#findItem">findItem</a>( i ) )
                fileMenu-&gt;<a href="qmenudata.html#removeItem">removeItem</a>( i );
            if ( i &lt; int(m_recentFiles.count()) )
                fileMenu-&gt;<a href="qmenudata.html#insertItem">insertItem</a>( QString( "&amp;%1 %2" ).
                                        arg( i + 1 ).arg( m_recentFiles[i] ),
                                      this, SLOT( fileOpenRecent(int) ),
                                      0, i );
        }
    }
</pre>
<p> 無論用戶打開一個(gè)存在的文件或者保存一個(gè)新文件的時(shí)候,這個(gè)函數(shù)會(huì)被調(diào)用(通常是通過updateRecentFiles())。對于這個(gè)字符串列表中的每一個(gè)文件我們都插入一個(gè)新的菜單條目。我們在每一個(gè)文件名的前面都加上一個(gè)從<u>1</u>到<u>9</u>帶下劃線的數(shù)字,這樣就可以支持鍵盤操作(比如,<tt>Alt+F,2</tt>就可以打開列表中的第二個(gè)文件)。我們給每一個(gè)菜單條目一個(gè)和它們在字符串列表中的索引位置相同的數(shù)值作為id,并且把每一個(gè)菜單條目都和fileOpenRecent()槽相連。老的文件菜單條目會(huì)在每一個(gè)最新的文件菜單條目id來到的同時(shí)被刪除。它會(huì)工作是因?yàn)槠渌募藛螚l目都有一個(gè)由Qt生成的id(它們都是&lt;0的),然而我們所創(chuàng)建的菜單條目的id都是&gt;=0的。
<p> 

<pre>    void ChartForm::updateRecentFiles( const <a href="qstring.html">QString</a>&amp; filename )
    {
        if ( m_recentFiles.find( filename ) != m_recentFiles.end() )
            return;

        m_recentFiles.push_back( filename );
        if ( m_recentFiles.count() &gt; MAX_RECENTFILES )
            m_recentFiles.pop_front();

        updateRecentFilesMenu();
    }
</pre>
<p> 當(dāng)用戶打開一個(gè)存在的文件或者保存一個(gè)新文件的時(shí)候,它會(huì)被調(diào)用。如果文件已經(jīng)存在于列表中,它就會(huì)很簡單地返回。否則這個(gè)文件會(huì)被添加到列表的末尾并且如果列表太大(&gt;9個(gè)文件)的話,第一個(gè)(最老的)就會(huì)被移去。然后updateRecentFilesMenu()被調(diào)用來在File菜單中重新創(chuàng)建最近使用的文件列表。
<p> 

<pre>    void ChartForm::fileOpenRecent( int index )
    {
        if ( !okToClear() )
            return;

        load( m_recentFiles[index] );
    }
</pre>
<p> 當(dāng)用戶選擇了一個(gè)最近打開的文件時(shí),fileOpenRecent()槽會(huì)伴隨一個(gè)用戶選擇的文件的菜單id而被調(diào)用。因?yàn)槲覀兪刮募藛蔚膇d和文件在<tt>m_recentFiles</tt>列表中的索引位置相等,我們就可以很簡單的通過文件的菜單條目id來載入了。
<p> <h2> 退出
</h2>
<a name="5"></a><p> <pre>    void ChartForm::fileQuit()
    {
        if ( okToClear() ) {
            saveOptions();
            qApp-&gt;<a href="qapplication.html#exit">exit</a>( 0 );
        }
    }
</pre>
<p> 當(dāng)用戶退出時(shí),我們給他們保存任何未保存數(shù)據(jù)的機(jī)會(huì)(okToClear()),然后在結(jié)束之前保存它們的選項(xiàng),比如窗口的大小和位置、圖表類型等等。
<p> <pre>    void ChartForm::saveOptions()
    {
        <a href="qsettings.html">QSettings</a> settings;
        settings.<a href="qsettings.html#insertSearchPath">insertSearchPath</a>( QSettings::Windows, WINDOWS_REGISTRY );
        settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "WindowWidth", width() );
        settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "WindowHeight", height() );
        settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "WindowX", x() );
        settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "WindowY", y() );
        settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "ChartType", int(m_chartType) );
        settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "AddValues", int(m_addValues) );
        settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "Decimals", m_decimalPlaces );
        settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "Font", m_font.toString() );
        for ( int i = 0; i &lt; int(m_recentFiles.count()); ++i )
            settings.<a href="qsettings.html#writeEntry">writeEntry</a>( APP_KEY + "File" + QString::number( i + 1 ),
                                 m_recentFiles[i] );
    }
</pre>
<p> 直接使用<a href="qsettings.html">QSettings</a>來保存用戶選項(xiàng)。
<p> <h2> 自定義對話框
</h2>
<a name="6"></a><p> 我們想讓用戶可以手工地設(shè)置一些選項(xiàng)并且創(chuàng)建和編輯值、值顏色等等。
<p> 

<pre>    void ChartForm::optionsSetOptions()
    {
        OptionsForm *optionsForm = new OptionsForm( this );
        optionsForm-&gt;chartTypeComboBox-&gt;setCurrentItem( m_chartType );
        optionsForm-&gt;<a href="qwidget.html#setFont">setFont</a>( m_font );
</pre><pre>        if ( optionsForm-&gt;<a href="qdialog.html#exec">exec</a>() ) {
            setChartType( ChartType(
                    optionsForm-&gt;chartTypeComboBox-&gt;currentItem()) );
            m_font = optionsForm-&gt;<a href="qwidget.html#font">font</a>();
</pre><pre>            drawElements();
        }
        delete optionsForm;
    }
</pre>
<p> 設(shè)置選項(xiàng)的視窗是由我們自定義的<tt>OptionsForm</tt>提供的,在<a href="tutorial2-09.html">設(shè)置選項(xiàng)</a>中。這個(gè)選項(xiàng)視窗是一個(gè)標(biāo)準(zhǔn)的“啞的”對話框:我們創(chuàng)建一個(gè)實(shí)例,把所有的圖形用戶界面元素都和所有相關(guān)的設(shè)置都組裝起來,并且如果用戶點(diǎn)擊了“OK”(exec()返回一個(gè)真值)我們就會(huì)從圖形用戶界面元素中讀取設(shè)置。
<pre>    void ChartForm::optionsSetData()
    {
        SetDataForm *setDataForm = new SetDataForm( &amp;m_elements, m_decimalPlaces, this );
        if ( setDataForm-&gt;<a href="qdialog.html#exec">exec</a>() ) {
            m_changed = true;
            drawElements();
        }
        delete setDataForm;
    }
</pre>
<p> 創(chuàng)建和編輯圖表數(shù)據(jù)的視窗由我們自定義的<tt>SetDataForm</tt>提供,在<a href="tutorial2-08.html">獲得數(shù)據(jù)</a>中。這個(gè)視窗是一個(gè)“聰明的”對話框。我們傳入我們想要使用的數(shù)據(jù)結(jié)構(gòu),并且對話框可以自己處理數(shù)據(jù)機(jī)構(gòu)的表達(dá)。如果用戶點(diǎn)擊“OK”,對話框會(huì)更新數(shù)據(jù)結(jié)構(gòu)并且exec()會(huì)返回一個(gè)真值。如果用戶改變了數(shù)據(jù)時(shí)我們在optionsSetData()中所要做的時(shí)把圖表標(biāo)記為changed并調(diào)用drawElements()來使用新的和更新過的數(shù)據(jù)來重新繪制圖表。
<p> <p align=right>
<a href="tutorial2-04.html">&laquo; 主體很容易</a> |
<a href="tutorial2.html">目錄</a> |
<a href="tutorial2-06.html">畫布控制 &raquo;</a>
</p>
<p> 
<!-- eof -->
<p><address><hr><div align=center>
<table width=100% cellspacing=0 border=0><tr>
<td>Copyright &copy; 2002 
<a href="http://www.trolltech.com">Trolltech</a>
<td><a href="http://www.trolltech.com/trademarks.html">Trademarks</a>
<td><a href="zh_CN.html">譯者:Cavendish</a>
<td align=right><div align=right>Qt 3.0.5版</div>
</table></div></address></body>
</html>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品精品亚洲| 欧美激情中文不卡| 国产精品18久久久久久久久| |精品福利一区二区三区| 欧美精选一区二区| 成人av一区二区三区| 麻豆一区二区在线| 一区二区三区在线视频免费| 久久综合色一综合色88| 91免费观看视频| 国产91富婆露脸刺激对白 | 亚洲综合视频在线| 久久久国产精华| 91精品国产欧美日韩| 日本韩国一区二区三区视频| 国产成人小视频| 韩国三级在线一区| 日韩高清一区二区| 一区二区三区日韩精品视频| 国产精品精品国产色婷婷| 精品粉嫩aⅴ一区二区三区四区| 欧美调教femdomvk| aaa欧美大片| 成人激情校园春色| 国产精品一区二区免费不卡 | 91在线无精精品入口| 国产99久久精品| 精品一区二区三区在线播放 | 91视频免费播放| www.在线成人| 成人av在线观| 99天天综合性| av中文字幕不卡| 成人黄色国产精品网站大全在线免费观看| 精品一区二区三区在线播放| 精品一区二区三区在线观看国产 | 国产欧美精品一区二区色综合| 精品久久人人做人人爽| 欧美v日韩v国产v| 欧美成人三级电影在线| 日韩亚洲欧美在线| 日韩你懂的在线观看| 精品国产91亚洲一区二区三区婷婷| 91精品国产综合久久小美女| 3atv一区二区三区| 亚洲午夜电影网| 精品欧美一区二区三区精品久久 | 国产一区在线观看视频| 国产在线国偷精品免费看| 激情六月婷婷综合| 国产成人自拍在线| 成人影视亚洲图片在线| 91在线无精精品入口| 91福利精品视频| 欧美日精品一区视频| 欧美一区二区视频在线观看2020 | thepron国产精品| 色婷婷综合久色| 欧美天堂亚洲电影院在线播放| 欧美二区在线观看| 精品国产1区二区| 国产精品久久毛片| 亚洲成在线观看| 国产在线播精品第三| www.亚洲在线| 91精品国产色综合久久不卡电影 | 久久这里只精品最新地址| 国产精品麻豆久久久| 一区二区成人在线观看| 日韩精彩视频在线观看| 国产一区二区美女诱惑| 91麻豆自制传媒国产之光| 在线综合视频播放| 国产欧美精品一区二区色综合朱莉| 一区二区三区欧美日韩| 欧美aaa在线| aa级大片欧美| 日韩一级二级三级精品视频| 国产精品日日摸夜夜摸av| 亚洲成人精品一区二区| 国产成a人亚洲精| 欧美精品久久一区二区三区| 久久久久九九视频| 亚洲一本大道在线| 国产精品香蕉一区二区三区| 91黄色激情网站| 亚洲精品一区二区三区福利| 亚洲久本草在线中文字幕| 精品一区二区三区在线播放| 在线观看91视频| 欧美国产综合色视频| 三级成人在线视频| 成人av高清在线| 日韩精品在线看片z| 亚洲美女区一区| 国产精品一区2区| 欧美一区二区女人| 一区二区三区四区视频精品免费 | 亚洲女爱视频在线| 国产精品白丝jk黑袜喷水| 欧美肥妇bbw| 亚洲欧美一区二区三区极速播放 | 欧美大度的电影原声| 一区二区三区在线免费播放| 懂色中文一区二区在线播放| 日韩一区二区三区视频| 亚洲综合免费观看高清完整版在线 | 精品一区二区三区在线播放| 日本精品视频一区二区三区| 久久伊人中文字幕| 丝袜诱惑制服诱惑色一区在线观看| av激情亚洲男人天堂| 久久久久久免费网| 美女被吸乳得到大胸91| 欧美午夜一区二区三区| 亚洲欧美日韩在线不卡| 成人av影院在线| 中文字幕不卡一区| 精品一区二区在线播放| 91精品在线麻豆| 亚洲成av人片一区二区| 在线一区二区三区| 亚洲视频在线一区| av资源站一区| 国产精品久久久久久久久快鸭| 国产成人高清在线| 国产视频一区在线观看| 国产精品123区| 久久亚洲影视婷婷| 国产传媒久久文化传媒| 2022国产精品视频| 国产精品123| 中文字幕第一区综合| 99久久国产综合精品色伊| 国产精品久久久久影院老司| thepron国产精品| 亚洲欧美日韩一区二区| 色婷婷一区二区三区四区| 亚洲一区视频在线| 91.com在线观看| 三级欧美在线一区| 欧美一二三在线| 久久se精品一区精品二区| 精品日产卡一卡二卡麻豆| 国产一区二区三区久久久| 国产亚洲欧美日韩日本| 成人精品gif动图一区| 最新中文字幕一区二区三区| 色综合久久久久久久| 亚洲图片一区二区| 91精品国产乱| 国产经典欧美精品| 日韩一区在线看| 欧美日韩一区二区不卡| 免费看欧美女人艹b| 精品日韩99亚洲| 成人av先锋影音| 午夜日韩在线观看| 日韩免费电影一区| 成人午夜碰碰视频| 一区二区三区精品视频| 欧美一级在线视频| 福利一区福利二区| 亚洲蜜臀av乱码久久精品蜜桃| 91精品中文字幕一区二区三区| 国产伦精品一区二区三区在线观看| 国产精品高潮久久久久无| 欧美剧情电影在线观看完整版免费励志电影| 日韩国产在线观看一区| 国产午夜亚洲精品午夜鲁丝片 | 91麻豆蜜桃一区二区三区| 亚洲aaa精品| 日本一区二区三区国色天香| 欧美视频完全免费看| 乱一区二区av| 1000部国产精品成人观看| 欧美一区二区私人影院日本| 成人av电影观看| 三级成人在线视频| 亚洲欧洲av在线| 欧美一区二区成人| 91免费看`日韩一区二区| 麻豆成人久久精品二区三区红| 亚洲欧美综合另类在线卡通| 欧美一级黄色录像| 色88888久久久久久影院按摩| 久久66热re国产| 一区二区三区四区五区视频在线观看 | 精品一区二区免费视频| 亚洲免费在线视频一区 二区| 日韩免费看的电影| 在线观看日韩电影| 国产精品77777| 肉色丝袜一区二区| 亚洲精选视频免费看| 国产日韩欧美制服另类| 欧美一区二区三区公司| 欧美性videosxxxxx| 成人av网站免费观看| 国产美女一区二区|