QTナレッジポイントのまとめ(1)

QTダウンロードアドレス

1.タブキーのフォーカス順序を設定します。

static void QWidget::setTabOrder(QWidget * first, QWidget * second);

サブコンポーネントに焦点を合わせたくない場合は、サブコンポーネントに次のように設定できます。

setFocusPolicy(Qt::NoFocus);

2.設定編集用の右クリックメニューはありません。

setContextMenuPolicy(Qt::NoContextMenu);

3.ダイアログボックスでいくつかの子コントロールを監視する場合は、ダイアログボックスのコンストラクターで子コントロールごとにイベントフィルターをインストールしてから、ダイアログボックスのeventFilter関数の実装で判断を下すことができます。注:1。指定されたイベントがフィルター処理され、子コントロールに通知する必要がない場合は、trueを返す必要があります。そうでない場合は、falseを返します。2. eventFilter()関数で受信オブジェクトを削除する場合は、trueを返す必要があります。falseが返された場合、Qtは削除されたオブジェクトにイベントを送信し、プログラムがクラッシュします。3.ダイアログボックスと子コントロールは同じスレッドにある必要があります。そうでない場合、フィルターは呼び出されません。

CustomerInfoDialog::CustomerInfoDialog(QWidget *parent)
    : QDialog(parent)
{
    firstNameEdit->installEventFilter(this);
    lastNameEdit->installEventFilter(this);
    cityEdit->installEventFilter(this);
    phoneNumberEdit->installEventFilter(this);
}

4. Q_UNSED(オブジェクト)、変数が使用されていないというコンパイル警告を排除するため

5. QKeySequenceはキーシリーズクラスです。通常、一般的に使用される応答を決定するために使用されます。たとえば、イベントフィルタリングでは、QKeyEventのbool QKeyEvent :: matches(QKeySequence :: StandardKey key)const関数を使用して現在の応答を決定します。キーの組み合わせステータス。QKeySequence:: SelectAll、QKeySequence :: Copy、QKeySequence :: Pasteなどがあります。または、QKeySequence(Qt :: CTRL + Qt :: Key_P)のように自分で判断するように作成することもできます。;またはQKeySequence(tr( "Ctrl + p"));

6.ソフトウェアの再起動の実現:

void Widget::reboot()
{
    QString program = QApplication::applicationFilePath();
    QStringList arguments = QApplication::arguments();
    QString workingDirectory = QDir::currentPath();
    //startDetached()将已分离的方式启动一个新进程
    QProcess::startDetached(program, arguments, workingDirectory);
    QApplication::exit();
}

7. MSVCとMinGWの違い:

  • MSVCはMicrosoftのVCコンパイラを指します
  • MinGWは、Windows上のMinimalistGNUの略です。これは、GNUツールセットを使用してWindows固有のヘッダーファイルとインポートライブラリの自由に使用および自由に配布されるコレクションであり、サードパーティのCランタイムライブラリを必要とせずに、GNU / LinuxおよびWindowsプラットフォームでネイティブWindowsプログラムを生成できます。
     

8.QTはサブコントロール機能を見つけます。

1、T QObject::findChild(const QString & name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively)
2、QList<T> QObject::findChildren(const QString &name=QString()) const
例子:
QPushButton *button = parentWidget->findChild<QPushButton *>("button1");
QList<QLineEdit *> lineEdit = tabWidget.findChildren<QLineEdit *>("lineEdit");

9.デフォルトでQDialogとQMainWindowの右下隅にQSizeGrip(プロンプトウィンドウストレッチフラグ)があります。setSizeGripEnabled()を使用して有効にします。

10. QDialogダイアログボックスのタイプ:

  1. モーダルダイアログボックス:アプリケーションウィンドウ全体がユーザーの応答を受け入れることができず、待機状態にあり、次のコードを実行できません。
  2. 非モーダルダイアログボックス:ユーザーは引き続き他のウィンドウを操作でき、このダイアログボックスが閉じられていないため、他のウィンドウを操作できなくなります。
  3. セミモーダルダイアログボックス:ウィンドウの応答をブロックしますが、後続のコードの実行には影響しません。setModal(true)またはsetWindowModality()を呼び出してから、show()を呼び出します。

11. QWidgetは、ウィンドウをセミモーダルまたは非モーダルに設定するためのsetWindowModality()メソッドを提供します。

  • Qt :: NonModal:非モーダルダイアログボックス(デフォルト値)
  • Qt :: WindowModal:親ウィンドウ、親ウィンドウの親ウィンドウ、および兄弟ウィンドウのみをブロックします。(セミモーダルダイアログボックス)
  • Qt :: ApplicationModal:アプリケーション全体のすべてのウィンドウをブロックします。(セミモーダルダイアログボックス)

12. QDialogのopen()メソッドはセミモーダルダイアログボックスを表示し、show()はダイアログボックスを表示し、ダイアログボックスのタイプを気にしません。exec()はモーダルダイアログボックスを表示し、プログラム全体、つまりダイアログボックスが内部的に表示されます。プロパティは次のように設定されます。Qt:: ApplicationModal

13. QLabelは、テキストの配置を設定します。

  • 1.メンバー関数:setAlignment(Qt :: AlignCenter);
  • 2.スタイルシート:setStyleSheet( "qproperty-alignment: 'AlignBottom | AlignRight';");

14. QLabelがテキストを長すぎるように設定すると、自動的に折り返されます。setWordWrap(true);テキストにはスペースを含める必要があります。

通常の状況では、自動行折り返し後、テキストは上下の行の間に近くなります。行の高さは次のように設定できます。

pLabel->setWordWrap(true);
QString strText = QStringLiteral("一去二三里,烟村四五家。亭台六七座,八九十枝花。");
QString strHeightText = "<p style=\"line-height:%1%\">%2<p>";
strText = strHeightText.arg(150).arg(strText);
pLabel->setText(strText);

15. QLabelが長すぎて、折り返したくないが、その一部を...として省略したい場合は、QFontMetricsを使用して実現できます。

QString strText = QStringLiteral("一去二三里,烟村四五家。亭台六七座,八九十枝花。");
QString strElidedText = pLabel->fontMetrics().elidedText(strText, Qt::ElideRight, 200, Qt::TextShowMnemonic);
pLabel->setText(strElidedText);

16.複数のボタンを相互に排他的に設定するには、最初に複数のボタンをsetCheckable(true)に設定してそれらを選択できることを示し、次にそれらすべてをQButtonGroupに配置し、setExclusive(true)を設定してそれらの子ボタンが相互に排他的であることを示します。相互に排他的で、関連するシグナルbuttonClicked(QAbstractButton *)を介して、どのボタンが押されたかを認識します

17. QCheckBoxはsetTristate(true)を使用して、トライステート関数を有効にします

18. QLineEditには、デフォルトでプラットフォームスタイルガイドによって指定されたフレームがあり、setFrame(false)で閉じることができます。

19. QLineEditは、addAction関数を介してウィジェットを追加し、それらの表示位置を指定できます。

QAction * addAction(const QIcon & icon, ActionPosition position)

20. QLineEditは、バリデーター(setValidator())または入力マスク(setInputmask())を設定できます。

21.QSpinBoxとQDoubleSpinBoxはどちらもQAbstractSpinBoxから派生しています。一般的な方法:

pSpinBox->setRange(20, 200);  // 范围
pSpinBox->setSingleStep(10); // 步长
pSpinBox->setValue(150);  // 当前值
pSpinBox->setPrefix("$ ");  // 前缀
pSpinBox->setSuffix(" %");  // 后缀
pSpinBox->setWrapping(true);  // 开启循环
pSpinBox->setSpecialValueText(tr("Automatic"));  // 特殊文本值即默认值

prefix()、suffix()、およびspecialValueText()を使用しても十分な制御が得られない場合は、QSpinBoxをサブクラス化し、valueFromText()とtextFromValue()をオーバーライドできます。

21. QProgressBar-最小値と最大値の両方が0に設定されている場合、プログレスバーには現在の値の代わりにビジーインジケーターが表示されます。setInvertedAppearance()は、プログレスバーの進行方向を設定するために使用されます。setTextVisible()は、プログレスバーのテキストを表示するかどうかを設定します。setFormat()は、テキストの表示形式を設定します。

22、QDateTimeEdit-カレンダーポップアップを追加するように設定されたsetCalendarPopup(true)

23. QScrollAreaは、メンバー関数setWidget()を介してスクロールバーをコントロールに割り当てます。widget()関数を使用してウィジェットを取得でき、ビューはsetWidgetResizable()関数を使用してサイズを調整できます。takeWidget()関数を使用して、スクロール領域からウィジェットを削除します。ウィジェットを削除すると、ウィジェットの所有権が呼び出し元に渡され、QWidgetで受け取ることができます。

24. QToolBoxクラスは、列(タブ付き)ウィジェット項目を提供します。addItem()を使用してアイテムを追加するか、insertItem()を使用して特定の位置に挿入します。

25. QSystemTrayIconクラスは、アプリケーションのシステムトレイにアイコンを提供します。

26. QFileSystemWatcherクラスは、ファイルとディレクトリの変更を監視するためのインターフェイスを提供するために使用されます。

27. QDesktopServicesクラスによって提供される関数は、一般的なデスクトップサービスにアクセスするために使用されます。一般的に使用される静的メンバー関数は次のとおりです。

bool openUrl(const QUrl & url);//如果成功,返回true;否则,返回false。
//1、如果是网络URL,则以用户桌面环境的适当Web浏览器打开指定的的url。
//2、如果是本地文件,将会使用默认程序打开,例如.txt使用notepad
//3、如果是文件夹,则使用window直接打开
//4、如果指定一个mail地址,将会打开e-mail客户端(例如:Outlook)
//例如,下面的URL包含收件人([email protected])、主题(Qt)和正文(I am a Qter):
//QString strUrl = QString("mailto:%1?subject=%2&//body=%3").arg("[email protected]").arg("Qt").arg("I am a Qter");
//QDesktopServices::openUrl(QUrl(strUrl));
//为给定的scheme设置handler,receiver是接受者,method为receiver提供的处理函数。
void setUrlHandler(const QString & scheme, QObject * receiver, const char * method)
//例如:QDesktopServices::setUrlHandler("http", this, "openUrl_wmm");
//表示所有使用QDesktopServices::openUrl()处理的http形式的url都不在使用默认的web浏览器打开,而是直//接调用你的成员函数openUrl_wmm(),注意此函数只有一个参数(即const QUrl &url),且必须为公有槽函数
//删除以上面方式指定的scheme预先设定的URL handler。
void unsetUrlHandler(const QString & scheme)

28. QTimerはタイマーのタイプを設定できます。デフォルトは、Qt :: CoarseTimerです。

void setTimerType(Qt::TimerType atype)


間隔を設定せずにQTimerのstart()関数を直接呼び出すと、イベントがないときにタイマーがタイムアウト信号を継続的に送信します。

 

 

 

 

 

おすすめ

転載: blog.csdn.net/Chiang2018/article/details/102888785