レッスン 3-Qt ダイアログ_PHP チュートリアル
lesson3-Qt ダイアログ ボックス
1. QDialog クラス1. ダイアログ ボックスの概念
ダイアログ ボックスは、一般に、ユーザーに情報を提示したり、ユーザーからのフィードバック情報を受け取るために使用されます。アプリケーションとユーザーが対話するためのプラットフォーム。
ダイアログ ボックスはトップレベル ウィンドウであり、他のウィンドウに埋め込むことはできません。
2. ダイアログ ボックスの種類
1)、モーダル ダイアログ ボックス、アプリケーションの他のウィンドウにはアクセスできません。モーダル ダイアログ ボックスを表示するには、通常、その exec() 関数を呼び出す必要があります。 2) 非モーダル ダイアログ ボックス ダイアログ ボックスでは、アプリケーションの他のウィンドウに引き続きアクセスできます。モードレス ダイアログ ボックスを表示するには、通常、その show() 関数を呼び出します
3。QDialog クラスの親クラスは QWidget
です。


2. QDialog 派生クラス
開発者の使用を容易にするために、Qt はいくつかの特別な機能ダイアログ ボックスをカプセル化し、標準ダイアログ ボックスのセットを提供します。これらの組み込みダイアログ ボックスは、通常、システムのローカル ダイアログ ボックスを呼び出します
使用法:
1. ファイル ダイアログ ボックスを開き、選択したファイル名を返します

親ウィンドウ,
ダイアログ名,
デフォルトの選択パス,
ファイルフィルター); 2. 名前に従ってファイルを開き、成功した場合は true、失敗した場合は false を返します
QFile file(str);
file。 open(QIODevice ::ReadWrite);
3. 入力ストリームを取得します
QTextStream in(&file);
4. 入力ストリームを行ごとに読み取ります
in.readLine();
2. QColorDialog
使用法:
1. パレットを取得します
QPalette パレット = textEdit->palette();

QColor color = QColorDialog::getColor(
palette.color(QPalette::Text), / /ダイアログの初期化 Color
this //親ウィンドウ
);
3. パレットの色を設定します
palette->setColor(
QPalette::Text, //設定するパレットの部分
color //設定する色set
) ;
4. パレットをロード
textEdit->setPalette(palette);
GUI がそれぞれの部分にカラーフラグを設定します
3. QFontDialog

使用法:
1.フォントを取得します
bool ok;

ダイアログボックスの「OK」ボタンをクリックした場合、「キャンセル」ボタンをクリックするとokの値がtrueになります。ダイアログボックスを開くと、ok の値が false になります
2. フォントを設定します
textEdit->setFont(font);
4. QInputDialog
使用法:
入力ダイアログボックスを開くと、入力内容が次のようになります。 returns
QString str = QInputDialog ::getText(
this, //親ウィンドウ

"入力してください", //入力ボックスのラベルテキスト
QLineEdit::Normal, //エディットボックスが表示されます
QDir: :home(), //エディットボックスのデフォルトの内容
ok //bool変数をバックフィル
)
5, QProgressDialog
QProgress::setRange(0,100) //プログレスバーを設定しますrange
QProgress::setValue(50) //進行状況バーの現在の値を設定します
3. QMessageBox

タイトルとテキストを含むメッセージ問い合わせボックス。開発者は特定のニーズに応じてボタンの数とその機能をカスタマイズできます
2. QMessageBox::informat
タイトルとプロンプトを含むプロンプトメッセージボックス。開発者は、特定のニーズに応じてカスタマイズできます。ボタンの数と機能はカスタマイズする必要があります
3. タイトルとテキスト情報を含む警告メッセージ ボックス。特定のニーズに応じてボタンの数とボタンの機能

4. QMessageBox::critical
タイトルとテキスト情報を含む致命的なメッセージ ボックス。開発者は特定のニーズに応じてボタンの数とその機能をカスタマイズできます

5. タイトルとテキストを含むメッセージ ボックス

Qt に関するメッセージボックスを表示


4. ヘッダーファイル
<ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>#ifndef BUILDINDIALOG_H<br /> </li><li>#define BUILDINDIALOG_H<br /></li><li><br /></li><li>#include <QtGui><br /></li><li><br /></li><li>class buildInDialog : public QDialog<br /></li><li>{<br /></li><li>Q_OBJECT<br /></li><li>public:<br /></li><li>buildInDialog();<br /></li><li>private:<br /></li><li>QPushButton *fileBtn;<br /></li><li>QPushButton *colorBtn;<br /></li><li>QPushButton *fontBtn;<br /></li><li>QPushButton *saveBtn;<br /></li><li>QPushButton *closeBtn;<br /></li><li><br /></li><li>QTextEdit *textEdit;<br /></li><li>private slots:<br /></li><li>void fileSlot();<br /></li><li>void colorSlot();<br /></li><li>void fontSlot();<br /></li><li>void saveSlot();<br /></li><li>void closeSlot();<br /></li><li><br /></li><li>};<br /></li><li><br /></li><li><br /></li><li><br /></li><li>#endif</li></ol>
<ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>#include "buildInDialog.h"<br /> </li><li><br /></li><li>buildInDialog::buildInDialog()<br /></li><li>{<br /></li><li>fileBtn = new QPushButton("open");<br /></li><li>colorBtn = new QPushButton("color");<br /></li><li>fontBtn = new QPushButton("font");<br /></li><li>saveBtn = new QPushButton("save");<br /></li><li>closeBtn = new QPushButton("close");<br /></li><li><br /></li><li>textEdit = new QTextEdit();<br /></li><li><br /></li><li><br /></li><li>//布局<br /></li><li>QVBoxLayout *vLay = new QVBoxLayout();<br /></li><li>QHBoxLayout *hLay = new QHBoxLayout();<br /></li><li>vLay->addWidget(fileBtn);<br /></li><li>vLay->addWidget(colorBtn);<br /></li><li>vLay->addWidget(fontBtn);<br /></li><li>vLay->addWidget(saveBtn);<br /></li><li>vLay->addWidget(closeBtn);<br /></li><li><br /></li><li>hLay->addWidget(textEdit);<br /></li><li>hLay->addLayout(vLay);<br /></li><li><br /></li><li>setLayout(hLay);<br /></li><li><br /></li><li>connect(fileBtn, SIGNAL(clicked()), this, SLOT(fileSlot()));<br /></li><li>connect(colorBtn, SIGNAL(clicked()), this, SLOT(colorSlot()));<br /></li><li>connect(fontBtn, SIGNAL(clicked()), this, SLOT(fontSlot()));<br /></li><li>connect(saveBtn, SIGNAL(clicked()), this, SLOT(saveSlot()));<br /></li><li>connect(closeBtn, SIGNAL(clicked()), this, SLOT(closeSlot()));<br /></li><li>}<br /></li><li><br /></li><li>void buildInDialog::fileSlot()<br /></li><li>{<br /></li><li>//获取文件名字<br /></li><li>QString str = QFileDialog::getOpenFileName(this, "打开文件", "/", "All File(*.*)");<br /></li><li><br /></li><li>//打开文件<br /></li><li>QFile file(str);<br /></li><li>if(!file.open(QIODevice::ReadWrite))<br /></li><li>return;<br /></li><li>//得到输入流<br /></li><li>QTextStream in(&file);<br /></li><li>//读取数据<br /></li><li>while(!in.atEnd())<br /></li><li>{<br /></li><li>QString st = in.readLine();<br /></li><li>textEdit->append(st);<br /></li><li>}<br /></li><li>}<br /></li><li><br /></li><li>void buildInDialog::colorSlot()<br /></li><li>{<br /></li><li>//获取条色板<br /></li><li>QPalette palette = textEdit->palette();<br /></li><li>//打开对话框,获取颜色<br /></li><li>QColor color = QColorDialog::getColor(palette.color(QPalette::Text), this);<br /></li><li><br /></li><li>if(color.isValid())<br /></li><li>{<br /></li><li>//将颜色放到条色板<br /></li><li>palette.setColor(QPalette::Window, color);<br /></li><li>//加载调色板<br /></li><li>textEdit->setPalette(palette);<br /></li><li>}<br /></li><li><br /></li><li>}<br /></li><li><br /></li><li>void buildInDialog::fontSlot()<br /></li><li>{<br /></li><li>bool ok;<br /></li><li>QFont font = QFontDialog::getFont(&ok);<br /></li><li>if(ok)<br /></li><li>textEdit->setFont(font);<br /></li><li>}<br /></li><li><br /></li><li>void buildInDialog::saveSlot()<br /></li><li>{<br /></li><li>bool ok;<br /></li><li>//获取输入的信息<br /></li><li>QString str = QInputDialog::getText(this, "输入对话框", "请输入名字", QLineEdit::Normal, "wj", &ok);<br /></li><li><br /></li><li>//根据输入的名字打开文件<br /></li><li>QFile file(str);<br /></li><li>file.open(QIODevice::WriteOnly);<br /></li><li>//获取输出流<br /></li><li>QTextStream out(&file);<br /></li><li>//将textEdit的内容写入到out<br /></li><li>out<<textEdit->toPlainText()<<"\n";<br /></li><li>}<br /></li><li><br /></li><li>void buildInDialog::closeSlot()<br /></li><li>{<br /></li><li>QProgressDialog *progress = new QProgressDialog();<br /></li><li>progress->setRange(0, 100);<br /></li><li>for(int i=0; i<=100; i+=10)<br /></li><li>{<br /></li><li>qApp->processEvents();<br /></li><li>progress->setValue(i);<br /></li><li>sleep(1);<br /></li><li>}<br /></li><li>} </li></ol>
<ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>#include "buildInDialog.h"<br /> </li><li>#include <QApplication><br /></li><li><br /></li><li>int main(int argc, char *argv[])<br /></li><li>{<br /></li><li>//设置编码,防止汉字出现乱码<br /></li><li>QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8"));<br /></li><li>QApplication app(argc, argv);<br /></li><li><br /></li><li>buildInDialog dialog;<br /></li><li>dialog.show();<br /></li><li><br /></li><li>return app.exec();<br /></li><li>} </li></ol>
http://www.bkjia.com/PHPjc/1068089.html
www.bkjia.com

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

OnLeaks は、X (旧 Twitter) のフォロワーから 4,000 ドル以上を集めようとして失敗した数日後、Android Headlines と提携して Galaxy S25 Ultra のファーストルックを提供しました。コンテキストとして、h の下に埋め込まれたレンダリング イメージ

TCLは、2つの新しいスマートフォンの発表に加えて、NXTPAPER 14と呼ばれる新しいAndroidタブレットも発表しました。その巨大な画面サイズはセールスポイントの1つです。 NXTPAPER 14 は、TCL の代表的なブランドであるマット LCD パネルのバージョン 3.0 を搭載しています。

Vivo Y300 Pro は完全に公開されたばかりで、大容量バッテリーを備えた最もスリムなミッドレンジ Android スマートフォンの 1 つです。正確に言うと、このスマートフォンの厚さはわずか 7.69 mm ですが、6,500 mAh のバッテリーを搭載しています。これは最近発売されたものと同じ容量です

サムスンは、ファンエディション(FE)スマートフォンシリーズをいつアップデートするかについて、まだ何のヒントも提供していない。現時点では、Galaxy S23 FE は 2023 年 10 月初めに発表された同社の最新版のままです。

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Redmi Note 14 Pro Plusは、昨年のRedmi Note 13 Pro Plus(Amazonで現在375ドル)の直接の後継者として正式に発表されました。予想通り、Redmi Note 14 Pro Plusは、Redmi Note 14およびRedmi Note 14 Proと並んでRedmi Note 14シリーズをリードします。李

OnePlus の姉妹ブランドである iQOO の製品サイクルは 2023 年から 4 年で、ほぼ終わりに近づいている可能性があります。それにもかかわらず、ブランドはまだZ9シリーズの開発を終えていないと宣言しました。その最終、そしておそらく最高エンドとなる Turbo+ バリアントが、予測どおりに発表されました。 T
