fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

2014年04月 | ARCHIVE-SELECT | 2014年06月

PREV | PAGE-SELECT |

≫ EDIT

C++ Qt QString と std::string

Qt でのウィジェットの文字列は QString で行われます。
Qt だけで完結する場合はあんまり問題はないのですが
std::string に変換したいと思うことがあります。多分。きっと。

で、そうなるとこういう問題があるようです。

・QString::toStdString() のバグ
http://d.hatena.ne.jp/yus_iri/20120328/1332888387

とはいってもこの記事も古いので今は解決してるかもしれませんが。
念のためということで。

一応自分は下の方に書いてある方法で扱っています。

| Qt | 23:11 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

C++ Qt 縦横複合レイアウト

Qt でプログラムでレイアウトを組む場合、
QVBoxLayout と QHBoxLayout を使った組むことになります。

そこで、こういったレイアウトを組もうと思います。

Qt005

QVBoxLayout で縦に並べつつ、QHBoxLayout でボタンが横に並んでるというものですね。
QBoxLayout はウィジェットを addWidget() で追加していくのですが
QBoxLayout に QBoxLayout は addWidget() をすることはできません。

というわけでこんな感じに記述します。

// 縦レイアウト
QVBoxLayout* verticalLayout = new QVBoxLayout();
// 横レイアウトを作成
QHBoxLayout* horizonalLayout = new QHBoxLayout();
// 縦レイアウトの中に横レイアウトを入れる
verticalLayout->addLayout(horizonalLayout );


といった感じで、addWidget() を使う代わりに addLayout() を使って登録します。

| Qt | 02:39 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

Qt 参考サイト

とても参考になるサイトさんを見つけたのでメモです。

・タンスの引き出し
・Qt 定番小ワザ集

Qt もぐぐると結構英語がでてくるのでこういった日本語の説明はすごく助かります。

| Qt | 03:11 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

C++ Qt QMainWindow でのレイアウト

Qt でレイアウトをプログラムで組む場合、QVBoxLayout などを使います。
これを QWidget でやる場合にはうまくいくのですが、
QMainWindow で同じ処理を書くとレイアウトが崩れてしまいます。

小一時間悩んでいたのですが
その継承した QMainWindow なりに以下の処理が必要のようです。


// メインウィンドウを継承したウィンドウ
QWindowMain::QWindowMain( QWidget* parent )
: QMainWindow(parent)
{
// メインのウィジェットを作成
QWidget* mainWidget = new QWidget(this);
// 中央に設定
setCentralWidget(mainWidget);
}


setCentralWidget() という関数で配置してあげ、
その Widget から QVBoxLayout を作るとうまくいくようです。
あまりぐぐっても出てこないので悩んでしまいました…。

| Qt | 02:05 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

C++ Qt ウィンドウハンドルの取得

ウィンドウハンドルの取得方法。
Qt で作ったウィンドウに DirectX で描画する場合などに必要になるかも?


// ウィンドウを作成
QMainWindow qMainWindow = new QMainWindow();
// ウィンドウハンドルの取得
HWND hWindow = qMainWindow->winId();


といった感じで取得できるみたいです。
無事 Qt で作ったウィンドウに DirectX で描画できるようになりました。

Qt003

| Qt | 04:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

C++ Qt のウィンドウ基本

とりあえずメインウィンドウを出すまでの基本をメモです。



// メインウィンドウ作成
QMainWindow* qWindow = new QMainWindow();

// ウィンドウタイトルセット
qWindow->setWindowTitle( "Title Name" );

// サイズ変更
qWindow->resize( QSize(1280,720) );

// サイズ変更不可の固定サイズの場合はこちら
qWindow->setFixedSize( QSize(1280,720) );

// ウィンドウを表示する
qWindow->show();

// フルスクリーンで表示する場合はこちら
qWindow->showFullScreen();



とりあえずこれでメインウィンドウの表示ができるのではないかと。

| Qt | 01:27 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

Qt 記事目次

とりあえずいくつか Qt のメモが溜まってきたのでまとめてみました。
少しでも Qt 使ってる人に役に立てばと思います。

■参考
・Qt 参考サイト

■C++ Qt
・C++ Qt Layout のスペースを均等割りしないようにする
・C++ Qt Widget 上でのキーボード操作
・C++ Qt スタイルシート(CSS)を使う
・C++ Qt Qt5 を EXE で実行するために必要なDLL
・C++ Qt QTreeWidget の横スクロールバー
・C++ Qt QListWidget の removeItemWidget を使ったアイテム削除
・C++ Qt シグナルの停止
・C++ Qt カラーピッカー(QColorDialog)
・C++ Qt 閉じるボタンで閉じないようにする
・C++ Qt QDockWidget のドッキング無効化
・C++ Qt QListWidget でチェックボックスリスト
・C++ Qt プログレスバー
・C++ Qt ウィンドウメッセージを処理する(Qt5)
・C++ Qt ウィンドウメッセージを処理する
・C++ Qt ドラッグ&ドロップで複数のファイルを受け取る
・C++ Qt QString と std::string
・C++ Qt 縦横複合レイアウト
・C++ Qt QMainWindow でのレイアウト
・C++ Qt ウィンドウハンドルの取得
・C++ Qt のウィンドウ基本
・C++ Qt で EXE のアイコンを設定する
・C++ Qt で日本語を扱えるようにする

| Qt 記事目次 | 19:57 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

C++ Qt で EXE のアイコンを設定する

Qt で EXE のアイコンを設定する方法です。
この方法は QtCreator などを使わず、C++ でプロジェクト作成した時の方法になります。

というわけで見つけたのはこの方法。

・Qt Application and window Icon under windows
http://stackoverflow.com/questions/6523039/qt-application-and-window-icon-under-windows

いつもと同じく VisualStudio のリソースを使うにはこの方法で良さそうですね。

// リソースからアイコンを取得してセット
QMainWindow* qWindow = new QMainWindow();
HICON hIcon = LoadIcon( hInstance, MAKEINTRESOURCE( IDI_ICON1 ) );
qWindow->setWindowIcon( QIcon( QPixmap::fromWinHICON( hIcon ) ) );


という感じにすると普通のアプリと同じくリソースから設定することができました。

Qt001

| Qt | 19:55 | comments:1 | trackbacks:0 | TOP↑

≫ EDIT

C++ Qt で日本語を扱えるようにする

C++ で Qt を使う場合、日本語(二バイト文字)が文字化けするときがあります。
これを回避する方法です。

・日本語を表示する
http://hkpr.info/qt/sample/html/s005.php

上記のサイトに書いてあるので見ていただければいいのですが、

#include < QTextCodec>
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());


という風に記述すれば大丈夫みたいですね。
これで無事日本語が表示できました!
Σの部分が文字化けしていたのが直ったようです。ひと安心。

Qt日本語

| Qt | 19:44 | comments:0 | trackbacks:0 | TOP↑

PREV | PAGE-SELECT |