カンテラの光の下で

dNaga392's memorandom

Qt4.7

【Qt】ウィジェットのスクリーンショット

メインウィンドウをスクリーンショットする メインウィンドウのスクリーンショットを撮る場合、 QPixmap::grabWidget を利用する。 // メインウィンドウのスクリーンショット pixmap = QPixmap::grabWidget( this ); // クリップボードにビットマップをコピ…

【Qt】Sleep()の実装例

QtによるSleepメソッド実装方法を記します(ほぼ参考資料の転載です)。 Sleep は指定時間の間、処理の実行を中断するメソッドです。 実装により次の2種類が存在しています。 秒指定 ミリ秒指定 前者には C++標準ライブラリ のSleepメソッドが、 後者には W…

【QtTest】 テストプロジェクトでテストデータにコンテナクラス(QList、QMap、...)を使う

Qtはテストプロジェクト向けパッケージでテストデータを受け渡す方法として、 次の方法が提供されている。 QTest::addColumn() メソッド QFETCH マクロ 標準組み込み型およびQtライブラリ提供クラスの多くは、 addColumn メソッドで登録したテストデータを、…

QtDesigner の custom widget plugin を作る

参考 %%QTDIR%%/examples/designer/worldtimeclockplugin 構成 ファイル 例(worldtimeclockplugin) ウィジェットクラスファイル worldtimeclock.h worldtimeclock.cpp プラグインクラスファイル worldtimeclockplugin.h worldtimeclockplugin.cpp プロジェク…

【QLibrary】DLL内の関数を呼び出す

今回は関数の定義されたDLLの作成と、DLLの関数の呼び出しについて。 QtライブラリのDLL読み込みクラスは、QLibraryとQPluginLoaderがありますが、 今回は QLibrary を使用して読み込みます。 やりたいことはだいたい以下の感じ。 // アプリケーションと同じ…

【Qt】【QListView】QListViewの選択項目の取得

QListViewの選択項目の取得には以下の2通りの方法があります。 フォーカス中のアイテムの取得 選択状態のアイテムの取得 まずはそれぞれの方法を示します。 フォーカス中のアイテムの取得 QStandardItem * item = NULL; // フォーカス中のアイテムのインデッ…

【Qt】【QListView】QListViewの項目の追加

QListView に項目の追加する方法を示します。 まずは、前準備として以下のようにモデルの設定します。 // リストビュー QListView *listView; listView = new QListView(); Q_CHECK_PTR(listView); // 表示モデルを用意 QStandardItemModel * model = new QS…

【Qt】テキストファイルの行数を取得する

行数の数え上げはQTextStream::readLine()を用います。 以下は実際に読んだ行数を返す例です。 int countLine(QString filePath) { int line_count=0; QFile file(filePath); file.open(QIODevice::ReadOnly); //| QIODevice::Text) QTextStream in(&file); …

【Qt】【QList】リストの中身を取り出す

QListの中の値を取得するにはメソッドat()やオペレーター[]を利用します。 それとは別に、QListの中の値を得て、QListから取り除くきたい。 そんなときはメソッドtakeAt()を用います。 先頭または最後に対して同様の操作をする場合は、 takeFirst(), takeLas…

【Qt】【QMessageBox】メッセージボックスからボタンを消す

メッセージボックスからボタンを消すにはメソッドsetStandardButtonsに0を渡してあげます。 QMessageBox m; m.setStandardButtons(0); ただ、クラスを作っても良いならQDialogを基底にQLabelを配置したダイアログを作成するのもありかも。 参考 QMessageBox …

【Qt】【QWidget】ウィジェットの画面を描画する

ウィジェットの画面を他のペイントデバイス(QPaintDeviceの派生クラス)に描画する方法です。 // QPixmapにウィジェットの表示を直接描画する方法 QWidget *w = new QWidget(); // 描画内容の設定 QLabel *lbl = new QLabel("Hello world."); QVBoxLayout *la…

【Qt】英国のラウンデルを描画

比率は目測です。以下のメッセージが出るのでそのままは使わないでください QPaintDevice: Cannnot destroy paint device that being painted QPixmap takeRAFRoundel() { // 画像のサイズ int width = 500; int height = 500; QPoint center(width/2,height…

【Qt】【QDirIterator】サブディレクトリを含むファイル検索

QDirIterator でサブディレクトリを含むファイル検索をする。 QDirIterator::IteratorFlags を設定すればok 以下はユーザーのピクチャフォルダのjpeg,pngファイルを検索するやつ // ユーザーのPicturesフォルダパスを取得 QString dirPath = QDesktopService…

【Qt】【QProgressBar】プログレスバーをステータスバーに表示【QStatusbar】

プログレスバーを生成し以下の3ステップを踏む 処理前にステータスバーへ追加 処理中に値を設定 処理後にステータスバーからの除去 QProgressBar bar; statusbar->addWidget( &bar ); bar.setMinimum( 0 ); bar.setMaximum( 100 ); for ( int i = 0; i < 100…

【Qt】【QButtonGroup】グループすべてのチェックボックスを未選択状態にする【QCheckBox】

QButtonGroup の 制御を一旦解くことで未選択化が可能です。 解除する前後でsetExclusiveメソッドを呼び出す方法は以下のとおり。 // groupStatus is a pointer to QButtonGroup groupStatus->setExclusive(false); groupStatus->checkedButton()->setChecke…

【Qt】ローカルファイルの実行

ローカルファイルの実行は QDesktopServices の openUriメソッドを使い実現できます。 //#include <QDesktopServices> //#include <QUrl> //#include <QString> // QString filepath; bool result = QDesktopServices::openUrl(QUrl::fromLocalFile(filepath)); c++ - Howto open html page in</qstring></qurl></qdesktopservices>…

【Qt】【QCheckBox】QCheckBoxの選択範囲の変更

QCheckBox の選択範囲を横幅いっぱいにする方法について。 スタイルシートで背景色を設定すると横幅いっぱいに色が設定されますが、 チェックできる範囲(チェックボックスとテキスト領域)と異なる範囲のため、 選択範囲を変えたいという事情がありました。 …

【QtJP】Qt 勉強会に行ってきました【QToolBox】

Qt勉強会に行ってきました! Qt 勉強会 #18 @Tokyo - Qt 勉強会 | Doorkeeper 勉強会はもくもく会と聞いていたので、 アイテムラベルをグループ化して表示するツールボックスを作ることを目標に臨みました。 夕方に予定があったため、勉強会の時間内に完成さ…

【Qt】【QDateTime】 日時の文字列表示

日時はQDateTimeで扱うことができます。toString関数を使うことで任意の文字列表示ができます。 // 現在の日時を取得 QDateTime dt = QDateTime::currentDateTime(); // QStringの割当用一時変数 QString str; // 以下は time_t tm として対応するものをコメ…

【Qt】【MinGW】Qt4.7.0をインストールする

歴史的経緯によりQt4.7.0の開発環境を作る事になりました。 その時の導入手順をここに記します。 手順としては20分かからないくらいです。 1. qt-win-opensource-4.7.0-mingw.exe を手に入れる。 公式のダウンロードページには最新版が紹介されているので、a…

【Qt】ディレクトリ内のファイルをすべて削除する

H261117 フィルタを追加(システムリンク".",".."を拾っていたため)。 ディレクトリ内のファイルをすべて消すときは、 QDirですべてのファイル情報を取得して、QFile::remove()を使いましょう。 作業用ディレクトリ内の一時ファイルやログを消すときに有効…

【Qt】AppDataのLocalに作業ディレクトリを作る

ガイドラインによると作業用の一時フォルダはAppDataのLocalに置くのがよいとのこと。 以下は、ベンダー名(Vendor)、アプリケーション名(AppName)の階層で作業ディレクトリを作成しています。 // AppData\Local\Vendor\AppName を作業ディレクトリとする // …

【VisualStudio2010】【Qt】uiファイルが更新されないとき

VS用のアドインでQt開発していると、 *.ui を編集しても ui_*.h が更新されない!なんて事があります。 このようなときは、まず他にui_*.hファイルがないか確認してみましょう。 自分の環境ではGeneratedFileディレクトリ内に最新のui_*.hが生成されてい…

【Qt】【QLabel】背景色の設定

ラベルの背景色はQtスタイルシートを設定するのが最良であるとのこと。 参考記事にはパレットでの設定方法も記載されています。 // 色名による指定 QLabel* pLabelR = new QLabel; pLabelR->setStyleSheet("background-color : red;"); // red // 16進RGBに…

【Qt】【QRadioButton】排他的なラジオボタンの配置

QRadioButtonで複数の排他的なラジオボタングループを作りたく 調べているとQVBoxLayoutでグループ化ができるとのこと。 でもでも階層構造にしてもすべて同じグループになっちゃうし、 QButtonGroupはQWidget継承してないしでどうすればいいんだ~? とさら…

【Qt】【QLabel】Set Text and Image

QLabelでは文字列と画像のどちらかしか設定することはできない。 よって、背景画像を設定したラベルを作成するには一工夫が必要。 例えば、画像をスタイルシートで設定することで、背景画像を設定したラベルが作れる。 QLabel* label = new QLabel(); label-…

【Qt】Text on image

QPainterでテキストを画像に乗せることができるとのこと。 透過画像も対応なので便利そう。 Qt - How to set text on top of QLabel Image mobile - Qt - How to set text on top of QLabel Image - Stack Overflow