【RAD統合環境】 Qt 総合スレ 5 【Win/Mac/Linux】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/10/01(木) 12:08:27フォーム、ボタンなどの各種ウィジェットからネットワーク、マルチスレッド、グラフィックス(OpenGL)や
各種コンテナ、XMLパーサー、組み込み JavaScript など、ライブラリの機能は多岐に渡ります。
Qt Creatorのリリースにより単なるGUIライブラリ・ツールキットから、
単体でGUI作成、コーディング、デバッグも可能な
クロスプラットフォーム対応のRADベースのIDE(統合開発環境)での
開発が可能となりました。
■対応プラットフォーム(デスクトップ用途の場合)
Windows 98, Me, NT4, XP, Server2003, Vista
Mac OS X 10.3, 10.4, 10.5
Linux
■ライセンス
・オープンソース版(Open-source version)
LGPL 2.1 または GPL 3.0 のうちどちらかを利用者が選べます。
LGPL を選んだ場合は商用利用が可能です(いくつか制限あり)。
・商用版(Commercial version)
こっちはQt Softwareか日本の代理店(SRA社)とライセンス契約(年間30万くらい?)を結んで使います
■Qt を使って作られたソフト例
KDE、Adobe Photoshop Elements、Google Earth、Skype、DAZ Studio など
■前スレ
【GUIツールキット】Qt 総合スレ 4【Win/Mac/Linux】
http://pc12.2ch.net/test/read.cgi/tech/1239996587/
0002デフォルトの名無しさん
2009/10/01(木) 12:08:56・Qt Software (旧Trolltech社/現在はNokia社の一部門)
http://www.qtsoftware.com/
・Qt のダウンロードページ(オープンソース版は、LGPL/Free Downloads タブから)
http://www.qtsoftware.com/downloads
・Qt のダウンロード(FTP)
ftp://ftp.qtsoftware.com/qt/source/
・SRA社(日本の代理店)の日本語で読める Qt 関連ドキュメント
http://www.sra.co.jp/qt/relation/index.html
■ライセンス関連まとめ
各ライセンスでの自作アプリのソース公開/頒布
Qtのライセンス アプリのライセンス Qtの頒布/(変更部分のソース公開)
GPL GPL(ソース公開必須) 必須
LGPL 任意(ソース公開不要) 必須
商用 任意(ソース公開不要) 不要
*: LGPLは動的リンク時
実際には他にも条件(リバースエンジニアリング関係とか)あるので、
きちんとライセンスの条文を読むこと。
0003デフォルトの名無しさん
2009/10/01(木) 12:09:32■どれをダウンロードするの?
・Download Qt SDK for Windows* (194 Mb)
IDE&コンパイラ付きインストーラー(Qt Creator&MinGW)
すぐに使える。オススメ
・Download Qt libraries 4.5 for Windows (136 Mb)
MinGW(gcc)版インストーラーや、その他のコンパイラ(VisualC++など)用のソースコード
VisualC++等でQtを使うには、これを落として Qt 自体をビルドする必要がある(2〜3時間かかる)
■Qt Creator&MinGW Windows版について
・プロジェクトのパスに半角スペース、日本語を入れちゃダメ
・日本語のソースコードは UTF-8 にする
「Projects」タブの「Editor Setting」設定でエディタの Encoding を「UTF-8」にする
デフォルトの System(ShiftJIS)は gcc と相性が悪い
・デバッグ出力はとりあえず英語にする
qDebug() に日本語を出力するとデバッガコンソールが文字化けする(UTF-8、ShiftJISどっちもムリ)
・配布時は mingwm10.dll も忘れずに一緒に入れておく
MinGW 環境でコンパイルするとこのDLLが必要になる。このファイルは public domain で配布上の制限はない
0004デフォルトの名無しさん
2009/10/01(木) 12:11:04Qt Creator を日本語化するプロジェクトです(非公式)
http://qt-creator-jp.sourceforge.jp/
0005デフォルトの名無しさん
2009/10/01(木) 23:54:53やっぱLPGLになったのが大きいのかな。
0006デフォルトの名無しさん
2009/10/02(金) 00:10:46インストールするだけで、RADで開発できる
環境が整うのは大きいよ。
0007デフォルトの名無しさん
2009/10/02(金) 00:25:18>>6
新しいIDEができたんだ。
みんなKDevelopを使ってるのかと思ってた。
0008デフォルトの名無しさん
2009/10/02(金) 01:01:000009デフォルトの名無しさん
2009/10/02(金) 11:51:000010デフォルトの名無しさん
2009/10/04(日) 12:13:56Linuxのほかのアプリでは問題ないが、Qtではエディタ内をクリックすると
画面が上下に行ったりきたりする
全画面モードにすれば、ちらつくだけで何とか使えるんだけど
だれか対処法知らない?
0011デフォルトの名無しさん
2009/10/04(日) 12:48:23>LGPL を選んだ場合は商用利用が可能です(いくつか制限あり)。
最近ライセンスについて調べたばかりの知識で
間違っていたら申し訳ないんだが
GPLでも商用利用は可能じゃね?
儲かるかどうかは別として
それとも3.0は別もん?
0012デフォルトの名無しさん
2009/10/04(日) 12:59:54GPLだと、ライブラリを利用する自社開発分のソースも公開する必要があるので、
競争の優位性を保とうと思うなら事実上使えないと判断されることが多いようである。
0013デフォルトの名無しさん
2009/10/04(日) 13:18:19http://www.amazon.co.jp/dp/487311344X
0014デフォルトの名無しさん
2009/10/04(日) 13:23:28(結果を返しているだけだからサービスのユーザーにソースを公開する必要がない!)
Qtでウェブサービス。作るかなぁ・・・。
0015デフォルトの名無しさん
2009/10/04(日) 13:26:21Linuxを含むX Windowプラットフォームでは、Linuxがもっともアクティビティが高いけど、
それ以外もちゃんとサポートされている。
http://doc.trolltech.com/4.5/supported-platforms.html
0016デフォルトの名無しさん
2009/10/04(日) 14:06:48GPLでも商用利用可能だけれど儲からないです。
LGPLなQtを使って作ったアプリケーションは、そのアプリケーションのライセンスで、
コピーの配布を禁止でき、有料販売できます。しかし、GPLなQtを使っているならば
アプリケーションのソースコードを公開しなければならないだけではなく、受取った
アプリケーションのコピーを無料で配れて、禁止もできないため、有料販売はできて
も利益を上げられません。
0017デフォルトの名無しさん
2009/10/04(日) 14:59:40今は
Qt Development Frameworks
http://qt.nokia.com
が正しいみたい。
0018デフォルトの名無しさん
2009/10/04(日) 16:01:00最初の一人に高く売りつけるwww
0019デフォルトの名無しさん
2009/10/04(日) 16:04:28つMySQL
サーバ系だと、どうしても継続的に保守が必要なので、GPLで出して、保守費で稼ぐというモデルが作れる。(本当に儲かるかどうかはケースバイケースだが)
しかし、Qtだとクライアントサイドだから、有償にし辛いのではないかなぁ。
0020デフォルトの名無しさん
2009/10/04(日) 16:44:04■Qt Creatorでのコード
ユーザーが作ったクラスで、実際の動作させたいコードを書くMainWindowは、
Qtライブラリの QMainWindow を継承している。基本的にここにはGUI配置のコードはない。
GUI配置のコードはUi::MainWindowにある。(※Ui::MainWindowはMainWindowとは別のクラス)
MainWindowは、内部にUi::MainWindowのポインタuiを持っており、
MainWindowのコンストラクタでUi::MainWindowを生成し初期化(ui->setupUi(this))する。
Ui::MainWindowクラスは、mainwindow.uiファイルを元に生成されるui_mainwindow.hによると、
何からも継承していないクラスであるUi_MainWindowでGUIを定義し、
Ui_MainWindowを継承してUi::MainWindowを作っている。
ややこしいなぁw
0021デフォルトの名無しさん
2009/10/04(日) 16:53:10ユーザーが作った検索用ダイアログクラスで、実際の動作をさせたいコードを書くGoToCellDialogは
QDialogと Ui::GoToCellDialogを継承している。GoToCellDialogには同じくGUI配置のコードはない。
GUI配置のコードは、Ui::GoToCellDialogにある。(※Ui::GoToCellDialogはGoToCellDialogとは別のクラス)
GoToCellDialogは、Ui::GoToCellDialogを多重継承しているので、Qt Creatorのように、uiポインタを経由せずに、
ui->setupUiを呼ぶことができる。
Ui::GoToCellDialogクラスは、・・・たぶん、Qt Creatorと一緒w
あぁ、なるほど。GUI配置のコードを継承して実行するか、
継承せずに委譲で行うかで違っているわけか。
0022デフォルトの名無しさん
2009/10/04(日) 17:09:21もちろん商用利用は可能だよ。
その場合はパッケージその物の販売ではなく、保守・改修やマニュアル、
トレーニング、追加パッケージ等で収入を得るモデルになると思うけど、
商用利用することは問題ありません。例えばLinux関連ビジネスで収入を
得ている企業はそれをやってたりする訳です。
だから、その一文はミスリーディングかもね。
0023デフォルトの名無しさん
2009/10/04(日) 17:17:55でも、それ作ったものを商用利用していることになるのかねぇ。
仮に君がQtでアプリを作ってそういうビジネスモデルをやっていたとする。
そして俺がそのQtアプリを入手して、君の代わり俺がその
ビジネスモデルで商売しても良いわけだ。
つまり俺が商売している部分は、アプリを除いた部分であって、アプリ自体は商用といえるのかねぇ?
0024デフォルトの名無しさん
2009/10/04(日) 17:47:41こちらは、少し前にビルドした開発途上版のQt Creator1.2.91を使っているけど、
設定で選べるようになっていて、継承をさせることも可能になっているよ。
0025デフォルトの名無しさん
2009/10/04(日) 18:05:14そのアプリを取り除いたら商売にならない訳だから、商用利用と言って良いでしょう。
誰かが代わりを務めることが出来ると言うけど、どうしてもついてしまう『差』というのも
あるものです。その原因は事業方針だったり、技術力だったり、ブランド力だったり、
色々ですが。例えば私がQtのコミッタで、あなたがQtのソースコードを読んだことが
なかったら、あなたは私のビジネスモデルで商売ができると言えるでしょうか。
0026デフォルトの名無しさん
2009/10/04(日) 18:13:13使い分けはどうしたら良いんだろう?
0027デフォルトの名無しさん
2009/10/04(日) 18:29:52それどころか、画面を構成するのに必要な画像など一式が感染する。
GPL2とはちょっと様相が変わった。
0028デフォルトの名無しさん
2009/10/04(日) 18:40:56>自分のソースにQtのLGPL版を静的リンクした場合、必ず自分のソースを公開する必要があるの。
無いよ。リンク可能なオブジェクトファイルを同梱すれば良いだけです。
自作部分のソースの公開は、静的リンクでも動的リンクでも必要ありません。
これは、ユーザがQtのソースコードを書き換えた時に、改変したQtを
再びあなたのプログラムにリンクできるようにするための決まりです。
例えばQtにバグがあった時なんかに、こういう仕組みが必要です。
>>>2 にLGPLのときは、わざわざ動的リンク時と断ってソース公開が任意となっている。
静的リンクでも一緒です。ただし動的リンクの場合は既に再リンク
可能なオブジェクトファイルが配布されているので、場合分けを
しているのでしょう。
0029デフォルトの名無しさん
2009/10/04(日) 19:45:33配布サイズでかくなるのが嫌だから別に公開しようと思ってるんだけど
0030デフォルトの名無しさん
2009/10/04(日) 19:59:280031デフォルトの名無しさん
2009/10/04(日) 23:19:05>もう新スレか。Qtのスレが盛り上がっていてちょっと嫉妬するよ。
>やっぱLPGLになったのが大きいのかな。
普段何使っているの?
0032デフォルトの名無しさん
2009/10/04(日) 23:38:01ttp://ringonoki.net/tool/movie-p/smplayer.php
これもQt製じゃね?
0033デフォルトの名無しさん
2009/10/05(月) 00:10:42Preferencesから3つの内のひとつを選択できるようになっています。
Aggregation as a pointer member:
ui->setupUi(this)、ui->lineEdit->text()というように使う場合。uiを
デストラクタでデリートする必要あり。
Aggregation:
ui.setupUi(this)、ui.lineEdit->text()というように使う場合。デストラクタ
でのuiのデリートは必要ない。
Multiple Inheritance: ui. や ui-> なしで、setupUi(this)、lineEdit->text()
というように簡潔にしたい場合。
0034デフォルトの名無しさん
2009/10/05(月) 08:47:41「なんでVC/C#/VBにしねーの」って話になって導入しづらいんだよなあ
昔のDelphiみたいな感じに知名度高くなってほしい
0035デフォルトの名無しさん
2009/10/05(月) 09:41:070036デフォルトの名無しさん
2009/10/05(月) 13:00:010037デフォルトの名無しさん
2009/10/05(月) 13:37:510038デフォルトの名無しさん
2009/10/05(月) 22:07:16gcc -I"dir"
のdirを指定させたいのだが。
0039デフォルトの名無しさん
2009/10/05(月) 23:35:37環境変数CPLUS_INCLUDE_PATHとC_INCLUDE_PATHにインクルードディレクトリを書き込んでOS再起動する
0040デフォルトの名無しさん
2009/10/05(月) 23:37:15ありがとう。
0041デフォルトの名無しさん
2009/10/06(火) 10:30:55真っ黒になったり、色が変わったり…。
XP環境では普通に描画されるのですが、どなたか対処方法をご存じないですか?
VistaマシンはレッツノートCF-Y8です。
ドライバは最新のものになっています。
0042デフォルトの名無しさん
2009/10/06(火) 11:15:43して、ファイルディレクトリをツリー表示してます。
表示、展開などは問題なく出来るんですが、ボタンを押すと選択されている
ディレクトリのフルパスを取りたいんですが、その考え方が分かりません。
選択項目の取得法、戻り値はフルパスなのか
0043デフォルトの名無しさん
2009/10/07(水) 10:41:10>CreatorでQDialogにQTreeViewとPushButtonを貼り、QTreeViewにQDirModelをセット
>して、ファイルディレクトリをツリー表示してます。
>表示、展開などは問題なく出来るんですが、ボタンを押すと選択されている
>ディレクトリのフルパスを取りたいんですが、その考え方が分かりません。
QTreeViewは、アイテムをクリックするとそれを知らせる
clicked(const QModelIndex & index)シグナルを発する。
それと、自分で定義したスロットを接続すればよい。
004443
2009/10/07(水) 10:42:56下記は、MainWindowの中のコードだから、カスタムTreeViewを定義しているときは、適宜修正して。
まず、コンストラクターなどで、シグナルとスロットを接続。
connect(m_TreeView, SIGNAL(clicked(QModelIndex)),
this, SLOT(displaySelectedDirectory(QModelIndex)));
以下は、スロットの実装例
void
MainWindow::displaySelectedDirectory(const QModelIndex& index)
{
QDirModel* dirModel = qobject_cast<QDirModel*>(ui->m_TreeView->model());
if(dirModel) {
if(dirModel->isDir(index)) {
QString seletcedDirPath = dirModel->filePath(index);
qDebug() << seletcedDirPath;
}
}
}
返す値は、絶対パス。
リファレンスのQDir、QDirInfo、QCoreApplicationなどをみれば、
ファイルやパスなどの便利なメソッドがあるよ。
004543
2009/10/07(水) 10:45:02QDirModel* dirModel = qobject_cast<QDirModel*>(ui->m_TreeView->model());
のui->は、いらない。
下記が正しい。
QDirModel* dirModel = qobject_cast<QDirModel*>(m_TreeView->model());
0046デフォルトの名無しさん
2009/10/07(水) 11:08:20よく分からないから自信ないけど。
再描画が適切に行われていないとか。
QWidget::update()を直接呼んでみるとかればいいかも。
004741
2009/10/07(水) 13:55:11レスありがとうございます。
QWidget::update()を直接呼んでもやってみたのですが、
現象は変わりませんでした。
オブジェクトを移動/回転させると色が変わったりするので、
光の当て方とかが、何かいけないのかな…と思いつつ調べています。
0048デフォルトの名無しさん
2009/10/07(水) 14:03:39Vista で描画の問題が起こった覚えはないけど、
可能性があるとすると OpenGL を使っているとか、
(INTEL系のチップセットだとドライバの出来が悪い)
ディスプレイの設定が16bit colorになっているとか。
後者は16bit colorが原因のバグが以前にあったと思うので、
未修正のがあるとすればだけど。
paintEvent() を自分で実装しているクラスで起こるとか、
QWidget にパレットを設定しただけでも起こるとか、
もっと詳しい情報があればもうすこし調べられるかもしれないが。
004941
2009/10/07(水) 15:21:18描画にはOpenGLを使用してます。
更にチップセットはINTELのものです(Intel(R) 965 Express Chipset Family)。
最新のドライバにしたのですが、相性が悪いとかあるのでしょうか…。
paintEvent()は自分では実装していません。
パレットを設定しただけで起こるかは…ちょっとわからないです。
005041
2009/10/07(水) 16:40:33ドライバが「最新」と表示されていたものの、
よくよく調べてみたら、最新では無いというオチでした…。
ダウンロードしたインストーラでは普通にインストールが不可だったので、
手動でインストールし、最新のものにしたら正しく表示されました。
レスしてくださった方々、ありがとうございました。
0051デフォルトの名無しさん
2009/10/07(水) 19:15:09新発売ではないというオチでした・・・。
005242
2009/10/07(水) 22:25:16そうか、継承元のQAbstractItemViewのclicked シグナルがIndexを渡して
くれるんですね。
継承元クラスを調べわすれてました。
ありがとうございました。
0053デフォルトの名無しさん
2009/10/08(木) 13:52:00QtをシステムでWebインストール(Synaptic)してQtCreatorのみをインストールしました。
Qtは自動アップデートされて4.5です。
こんどQtCreatorをバージョンアップしたらコンパイルできなくなってしまった。
どうも、Creatorのオプション>Qt4 を見ると自動検出したQtが検出できてないらしく
ここにパスを手動で入れれば良いみたいなんだけど
usr/shareとかusr/lib/qt4とか入れてみてもだめみたいで
なんのパスを入れれば良いでしょうか?
0054デフォルトの名無しさん
2009/10/08(木) 15:18:54パスを指定したあと、下のRebuildボタンを押す必要がある。
また、そのあと下のデフォルトQtバージョンから
使用したいバージョンを選ぶことで選択できるようになる。
005554
2009/10/08(木) 15:26:14パスは/usr/share/qt4になっている。
たぶんUbuntuのそれらしいところの、パスを指定すればいいと思う。
0056デフォルトの名無しさん
2009/10/08(木) 15:43:40Linuxにしたほうがいい。
以上、報告終わり。
0057デフォルトの名無しさん
2009/10/08(木) 17:04:02ドライバの問題なら、他のソフトでも問題が出ているはず。
DirectXやOpenGLを使っていて問題が出るのならまだしも
普通のソフトで問題が出るのだからQtの不具合で間違いない。
0058デフォルトの名無しさん
2009/10/08(木) 17:12:36クロスプラットフォームだからという理由で、Qtが選ばれる場合があるので
それは難しい気がする。
57の人がいうようにQtの不具合かもしれないし、そうではないかもしれない。
とにかく、理由が分からないのにそう決めるのは、個人的には賛成できない。
0059デフォルトの名無しさん
2009/10/08(木) 17:52:13Windows->不具合ありまともに動かない。
これがWindowsを使ってはいけない証拠。
0060デフォルトの名無しさん
2009/10/08(木) 18:02:120061デフォルトの名無しさん
2009/10/08(木) 21:46:16OpenGLで問題が出ているかどうかを確認せずにそのようなことは言えない。
そして、DirectXは、Qtは使っていないのに持出すのもおかしい。
0062デフォルトの名無しさん
2009/10/08(木) 22:23:46VCではダイログを開くとき、モーダル、モードレスって考え方があって
モーダルモードで開くとダイアログを閉じるまで制御が帰ってこなっかた。
Qtの場合.show()を実行してもステップは次に進むので、
.show()で閉じて、ダイアログを閉じたときシグナルを投げ、元のクラスの
スロットで受けて続きの処理を書くの?
モーダルモードみたいなものはないよね?
0063デフォルトの名無しさん
2009/10/08(木) 22:31:49そういうことじゃないの?
0065デフォルトの名無しさん
2009/10/09(金) 17:42:270066デフォルトの名無しさん
2009/10/09(金) 20:17:121) setModal(true) を設定 - アプリケーションモーダル。
2) setWindowModality(Qt::ApplicationModal) を設定 - アプリケーションモーダル。
3) setWindowModality(Qt::WindowModal) を呼出し、親ウィジェットを 0 以外に設定 - ウィンドウモーダル。
0067デフォルトの名無しさん
2009/10/09(金) 21:56:37以前のバージョンではGroupBoxをドラッグすると枠つきだったような
0068デフォルトの名無しさん
2009/10/09(金) 22:13:114.5.2 Windows XP だけど付いてるよ。
どの環境、スタイルでの話?
0070デフォルトの名無しさん
2009/10/10(土) 21:52:15Plastique Style でも Cleanlooks Style でも枠は付いてるな。
ttp://qt.nokia.com/doc/4.5/images/plastique-groupbox.png
ttp://qt.nokia.com/doc/4.5/images/cleanlooks-groupbox.png
プロパティを変更してないデフォルトのままの QGroupBox を置いて、
プレビューでスタイルを選択しても枠が付いていないようなら
一度Qtをインストールし直してみるのも手かも。
0071デフォルトの名無しさん
2009/10/11(日) 12:27:48あとコンパイルの時間も早くなったりするの?
0072デフォルトの名無しさん
2009/10/11(日) 15:20:58使ったことないからよくは分からないけれど、
MinGWにくらべて実効速度が明らかに速いというのは
よくネット上で見かける。
0073デフォルトの名無しさん
2009/10/11(日) 19:32:07安定度は同じ、実行速度はVCの方が見て分かる位に速い。
0074デフォルトの名無しさん
2009/10/11(日) 19:55:23それはない。
MinGWのコンパイラはGCCで、これはVC++より明らかに速い。
たとえばGCCは同一の文字列を一つにまとめるような最適化までする。
有名な話だ。
こういった最適化によって3D計算などではVC++より100倍以上高速化
されたという。
これもinfoに書かれている有名な話。
0075デフォルトの名無しさん
2009/10/11(日) 20:00:04DVDの書き込み速度もLinuxのほうが速い。
俺の環境ではWindowsで1時間かかったのがgccでコンパイルしたLinuxでは
1分かからなかった。
話にならないくらい違う。
0076デフォルトの名無しさん
2009/10/11(日) 20:17:53AMDのエンジニアが手を入れたりしてたからなのかな。
http://bvector.blogspot.com/2009/08/compilers-test-icc-vs-msvc-vs-gcc.html
単に整数演算がそこそこ速いというだけかもしれないけど。
http://www.osnews.com/story/5602/Nine_Language_Performance_Round-up_Benchmarking_Math_File_I_O/page3/
まぁGCCがMSVC++より明らかに速いというのはどうかなあ…
0077デフォルトの名無しさん
2009/10/11(日) 20:17:57以下のエラーが出て進みません。
Could not find make command: mingw32-make.exe in the build environment
Error while building project testproj
When executing build step 'Make'
Canceled build.
MinGWはインストールしてあります。
何か設定をしていないのでしょうか・・・
0078デフォルトの名無しさん
2009/10/11(日) 20:25:20インテルコンパイラはgccの倍以上遅いんだなあ。
0079デフォルトの名無しさん
2009/10/11(日) 20:27:530080デフォルトの名無しさん
2009/10/11(日) 20:33:150081デフォルトの名無しさん
2009/10/11(日) 21:11:24GPL/LGPL用ならライセンス的には問題ないよね?自分でコンパイル
したら何時間もかかるから、あったら助かるんだけど。
0082デフォルトの名無しさん
2009/10/11(日) 22:25:130083デフォルトの名無しさん
2009/10/11(日) 22:33:410084デフォルトの名無しさん
2009/10/11(日) 22:49:28ごっごるこーどにあったと思う
0085デフォルトの名無しさん
2009/10/11(日) 22:57:19これかな?最新版はないみたいだけど、いいかも。
ttp://qt.windows.binaries.googlepages.com/index.html
あとこんなのもあった。
ttp://code.google.com/p/qt-msvc-installer/
0086デフォルトの名無しさん
2009/10/12(月) 10:40:15できるの?
a.setStyle(new QPlastiqueStyle)で、できるみたいだけど
0087デフォルトの名無しさん
2009/10/12(月) 11:23:47PATH で mingw32-make.exe のあるディレクトリを指定してある?
0088デフォルトの名無しさん
2009/10/12(月) 13:55:59他には、
アプリケーションのならば、プロジェクトの実行時の設定で-styleオプションでスタイル指定できます。
フォームの編集でならば、場合によっては、オプションのEmbedded Designでスタイル指定という方法もあります。
008986
2009/10/12(月) 17:15:45>プロジェクトの実行時の設定で
プロジェクトの実行時の設定タブ内の引数の項目に
-style Plastiqueを入れると出来ました。
ただ、ここの引数はRelease版でも、実行時に引数として渡さないとダメですよね?
0090デフォルトの名無しさん
2009/10/12(月) 20:43:09いつもスタイルを特定のものにするならQApplication::setStyle("plastique") [static] でよいのではないですか。
0092デフォルトの名無しさん
2009/10/14(水) 21:38:080093デフォルトの名無しさん
2009/10/15(木) 13:12:31Nokiaが「Qt 4.6」ベータ版を公開、認定プログラムも導入
http://sourceforge.jp/magazine/09/10/15/0315259
> Nokiaは12日、Qt開発者認定制度「Qt Certification Program」も発表している。
> Qt開発者のスキル、知識などを数段階で評価するもので、「Qt Essentials」
> という試験に合格する必要がある。受験料は199ドル。
おまいら受ける?
0094デフォルトの名無しさん
2009/10/15(木) 16:01:140095デフォルトの名無しさん
2009/10/15(木) 18:27:48普通のプレイヤー見たく対応コーデックはなるべく多く
0096デフォルトの名無しさん
2009/10/15(木) 19:18:32まずは Phonon で問題ないか調べてみては。
0097デフォルトの名無しさん
2009/10/16(金) 01:48:27このバージョンは、Visual Studio Integrationに置き換わるものらしい。
これからは、Add-inだけが作り続けられるようだ。
0098デフォルトの名無しさん
2009/10/16(金) 04:14:51このバージョンは、Visual Studio Integrationを置き換えるものらしい。
0099デフォルトの名無しさん
2009/10/16(金) 20:50:29VSのAddinでやるよりQT Creatorの使い方を覚えた方がいい?
0100デフォルトの名無しさん
2009/10/16(金) 21:37:42インストールするとCreator1.2.1で勝手に日本語になってたと思うんだけど
最近は日本語になってないし、QGui.soがないとかlibがないとか一筋縄で
いかないみたいなんだけど、なんかかわった?
0101デフォルトの名無しさん
2009/10/16(金) 22:11:15落としたのは beta?
1.2 から 1.3 でメッセージ関連の変更が多いので今までの飜訳が
そのままは使えなくなっている。
1.3 向けの飜訳はまだこれからというところ。
なので現状では日本語は出ない。
正式リリースを待とう。
後者はわからない。どの distribution?
0102デフォルトの名無しさん
2009/10/16(金) 22:58:19たとえWindowsでしか使わなくても、Qt Creator 結構使い勝手いいわよ。
0103デフォルトの名無しさん
2009/10/16(金) 23:39:57むしろQT Creatorを使いやすいように改造してしまう
左の縦のボタンバーとか場所取りすぎや…
0104デフォルトの名無しさん
2009/10/16(金) 23:43:15FakeVimで使っててもそのうちイーってなって、外部のvim立ち上げてしまう。
0105デフォルトの名無しさん
2009/10/17(土) 01:11:240106デフォルトの名無しさん
2009/10/17(土) 01:13:370107デフォルトの名無しさん
2009/10/17(土) 01:32:43IDE風な拡張アドイン作れないんだろうね。
ピリオドおしたらメソッドのリスト表示とか
難しいのかな。
0108デフォルトの名無しさん
2009/10/17(土) 01:37:07vi(クローン)は知らんが、EmacsLispは大量のソースを解析させるには非力過ぎる上にマルチスレッドが使えない。
……それでもEmacsから逃れられないんだがorz
0109デフォルトの名無しさん
2009/10/17(土) 01:39:100110デフォルトの名無しさん
2009/10/17(土) 01:55:26ここら辺を使えばできるんじゃないかな。
http://cedet.sourceforge.net/
http://ecb.sourceforge.net/
俺に取っては UNIX が IDE だから、わざわざ
屋上屋を架そうとは思わないけどね。
0111デフォルトの名無しさん
2009/10/17(土) 02:11:27そのクラスのメソッドの一覧をだせるのですか?
0112デフォルトの名無しさん
2009/10/17(土) 02:28:35これのためだけにVS AddinじゃなくてCreator使ってるといっても過言じゃない
0113デフォルトの名無しさん
2009/10/17(土) 02:28:37ありがとう。Phononでいけそうだ。
ただ、WindowsでPhononモジュール追加して
コンパイルができない。あははははorz
なんかのライブラリとか足りないだけなんだけど、
Windows SDK入れてコンパイルしないといけない?
0114デフォルトの名無しさん
2009/10/17(土) 09:05:26それが必要なら勿論そうだよ。俺は要らないけど。
0115デフォルトの名無しさん
2009/10/17(土) 09:26:09クラスメソッドの一覧が出るとどれくらい楽になりますか。
0116デフォルトの名無しさん
2009/10/17(土) 10:31:05mingw が DirectShow をサポートしてないから Nokia のオープンソース版の
バイナリだと Phonon が入ってない。
ttp://labs.trolltech.com/blogs/2009/07/15/phonon-and-mingw-a-story-about-true-windows-love/
を参考に Qt を作り直す手もあるけど、どうせ作り直すなら Windows SDK でビルドし直した方がいいか。
試してないけど、 >>85 にVCでビルドしたバイナリについて書いてあるから、
それに Phonon が入ってるか確認してみるのもいいと思う。
0117デフォルトの名無しさん
2009/10/17(土) 11:25:17やっぱそういうことなのか。
ちょっと大変だな。
Visual Studio 2008は持っているんだが、オープンソースで作ることを考えると
無料のWindows SDKでのやり方を知っておいたほうが良いし、
phonon使うだけで、Windows開発環境のお勉強w
環境変数の設定とか、何がなにやら。VSは基本IDEでやっていたしなー。
将来のqt(mingw)ではデフォで含まれるようになるのだろうか?
WindowsだとDirectShow以外にもVLCバックエンドとかmplayerバックエンドも
使えるみたいだが、それを利用する方法(VLCインスコ? そのまま使える?)とかまだ調べて無いし、
道のりは長そうだ。phonen利用のための最短ルートの日本語解説がほしいぜ
0118デフォルトの名無しさん
2009/10/17(土) 12:09:57VS2008 のコマンドプロンプトからやっても同じと考えていい。
メニューからそれぞれのコマンドプロンプトを立ち上げれば環境変数も
あらかた設定されてるし。
手順的には
VS2008 or Windows SDK のコマンドプロンプトから
<Qtの展開したディレクトリ>/bin を PATH に追加して、
configure && nmake でだいたいはOK。
configure のログはちゃんと確認して欲しいモジュールが含まれているかの
チェックはしておくべき。
後、シャドービルドはいろいろめんどくさかった記憶がある。
ので、展開したディレクトリでビルドだな。
Qtのビルドはかなりディスク容量を食うのが問題なんだが。
0119デフォルトの名無しさん
2009/10/17(土) 12:39:33あと、俺のマシンがWin7 RC & 64bit なんで、
64bit 版 SDK入れれば良いの? 64bitコンパイラ?
32bit 版入れればどうなるんだろう?そもそも64bit版を作るときはどうするの?とか
最新のSDKはWin7対応の7.0だけど、6.1使ったほうが良いかな?
無理に新しいのを入れると、なんか変なところではまりそうだけど
古いのでWin7で動くのか?とか。
今すでにmingw別にいれてんだよなー。とか変にコンパイラ、ライブラリ
ごっちゃにならないよなぁ。環境変数の変更が、今ある別の開発環境に影響しないよなーとか
そういう基本的な知識を放置していたので、そういう疑問点が気になってしまってw
0120デフォルトの名無しさん
2009/10/17(土) 13:12:210121デフォルトの名無しさん
2009/10/17(土) 13:43:49qtのいろんなオブジェクトはconnectっていうメソッドを持ってますが
どれでconnectしてもかまわないのでしょうか?
0122デフォルトの名無しさん
2009/10/17(土) 14:02:16できる
検索すれば手順を書いたブログが出てくるよ
0123デフォルトの名無しさん
2009/10/17(土) 14:14:05Pythonのことはよく理解していないので、質問の意味が今ひとつ分からないんだけど、
それでいいと思う。
C++での話だけど。
シグナルとスロットを使用しているQtのクラスは、QObjectを継承して、
そのQObjectにはconnect()が定義されている。
C++では、各オブジェクトからconnect()を使用するときは、
static版の同一のconnect()を使用している例が多い。
0124123
2009/10/17(土) 14:28:15pythonの場合、selfが省略できない。C++では、thisがこのselfにあたる。
C++では、thisを省略して書くことが多い。だら、C++の例題で
connect(...
となっているのは、
this.connect(..
の可能性がある。少なくともQtを使用しているならそうなる。
PythonもC++と同じような実装ならば、
self.connect(...
と書いてあるのは、同じconnectを使用していることになる。
0125123
2009/10/17(土) 14:29:35誤)this.connect(..
正)this->connect(...
0126デフォルトの名無しさん
2009/10/17(土) 14:39:03( ゚∀゚)彡 ぱいそん!ぱいそん!
( ⊂彡
| |
し ⌒J
0127デフォルトの名無しさん
2009/10/17(土) 16:32:16qtcreatorが日本語にならないのですが、
どこかに日本語化の手順をまとめたサイトはないでしょうか???
0128デフォルトの名無しさん
2009/10/17(土) 16:55:39知らないんだけど。
qtcreatorのバージョンはいくつ?
パッケージシステムでインストールしたの?
0129128
2009/10/17(土) 17:14:44もし、qt-creator_1.0.0-0ubuntu3_i386.debをインストールしたのなら、
バージョンが古いから、下記サイトから最新安定版の1.2.1をダウンロードした方が
いいよ。これは、日本語化されているから。
http://qt.nokia.com/downloads
i386/32-bitなら”Qt Creator 1.2.1 Binary for Linux/X11 32-bit (31 Mb)”
を選べばよい。
インストーラーがついているから、インストールは簡単。
一般ユーザー権限しかなくても自分のホームディレクトリ以下にインストールできる。
ビルド時にQtディレクトリーが無いって、エラーが出たら
メニューの「ツール」->「オプション」->「Qt4」->「Qt Versions」のところで、
インストール済みのQtへのパスを追加指定して、「Rebuild」ボタンを押す。
チェックマークがつけばOK。
そして、「デフォルトQtバージョン」のところから追加したQtを選択すればよい。
0130デフォルトの名無しさん
2009/10/17(土) 17:33:45以前試した時は見た目も日本語化も使えるレベルに到達していないと感じたけど、wx みたいに
OS にバンドルされる様になるのかな。
0131デフォルトの名無しさん
2009/10/17(土) 17:56:59ここに情報が載っている。
ttp://gihyo.jp/dev/serial/01/qt-2009/0003
0132デフォルトの名無しさん
2009/10/17(土) 18:02:49ありがとん。Mac でも使えるという情報がもう少し出てきたら試してみます。
0133デフォルトの名無しさん
2009/10/17(土) 19:23:16その座標を知りたいのですが、mousePressEvent()ってGraphicsViewをサブクラス化して
使わなくてはならないのでしょうか?
QtCreatorのDesignerからこの辺さくっと書けないのですかね?
0134デフォルトの名無しさん
2009/10/17(土) 20:14:51これだとめっさ小さなボタンになってしまいます.
ウィンドウ一杯に(日←みたいな感じで)二個並べたいんですが
どうしたらいいんでしょう?wxPythonでサイザーをちょっと
使ったことがある程度です.
import PyQt4.QtGui,PyQt4.QtCore, ys
class HelloButton(PyQt4.QtGui.QPushButton):
def __init__(self, parent, text):
PyQt4.QtGui.QPushButton.__init__(self, parent)
self.setText(text)
class HelloWindow(PyQt4.QtGui.QMainWindow):
def __init__(self, *args):
PyQt4.QtGui.QMainWindow.__init__(self)
self.hello_button_1 = HelloButton(self, "hello1")
self.hello_button_2 = HelloButton(self, "hello2")
self.qVBoxLayout = PyQt4.QtGui.QVBoxLayout()
self.qVBoxLayout.addWidget(self.hello_button_1)
self.qVBoxLayout.addWidget(self.hello_button_2)
self.q_widget = PyQt4.QtGui.QWidget(self)
self.q_widget.setLayout(self.qVBoxLayout)
q_application = PyQt4.QtGui.QApplication(sys.argv)
hello_window = HelloWindow()
hello_window.show()
q_application.connect(q_application, PyQt4.QtCore.SIGNAL("lastWindowClosed()"),
q_application, PyQt4.QtCore.SLOT("quit()"))
q_application.exec_()
0135デフォルトの名無しさん
2009/10/17(土) 20:22:50各ボタンの sizePolicy に Expanding とか MinimumExpanding とか指定する。
ttp://qt.nokia.com/doc/4.5/qsizepolicy.html#Policy-enum
0136デフォルトの名無しさん
2009/10/17(土) 20:31:12NOKIAのサイトからダウンロードしたqtcreatorも日本語化されてないようです。
試してみたけどだめでした。
具体的に日本語化されるには何というファイルがどこにあればいいのでしょうか?
qtcreatorはUbuntu9.04の奴です。
0137デフォルトの名無しさん
2009/10/17(土) 21:17:22ありがとう.望むものになりました.
setCentralWidget をしてなかった.
それが何を意味するのかこれから勉強します.
QMainWindow に直接 setLayout しようとしてみたり,
なんか基本が分かってない俺.
新しいフレームワークを使い始めた時はそんなもんかな.
0138デフォルトの名無しさん
2009/10/17(土) 21:28:51ピリオド押した瞬間にドロップダウンが出てくると
イラッとする漏れって
0139デフォルトの名無しさん
2009/10/17(土) 21:30:54ubuntu 9.04 で Nokia から取ってきた qtcreator 1.2.1 / qt-sdk 2009.04 で
問題なく日本語になってるぞ。
1.2.1 で日本語になってないとしたら、 LANG 環境変数は何になってる?
LANG を ja_JP.UTF-8 にして起動してもだめ?
0140デフォルトの名無しさん
2009/10/17(土) 21:31:11別に選ばなくても良いんだよ。
0141デフォルトの名無しさん
2009/10/17(土) 21:32:230142デフォルトの名無しさん
2009/10/17(土) 22:05:270143デフォルトの名無しさん
2009/10/17(土) 22:29:27ja_JP.UTF-8
なぜだ??
0144デフォルトの名無しさん
2009/10/17(土) 22:32:09まぁQtへのバインディングと考えれば必要なのは理解できるんですが、
これを各マシンにインストールするのは面倒すぎます。
もし可能であればネットワークにQtを置いて、環境変数でそこを指すようにして、
ネットワークで共有、ってことをやりたい。
それが出来るんならまぁ使ってもいいかな、って気がします。
ところで、wxPythonと比較してPyQtは何に優れてるんですかね。
AutodeskがPyQtを推す意味って何なんだろうか。
0145デフォルトの名無しさん
2009/10/17(土) 22:36:290146デフォルトの名無しさん
2009/10/17(土) 22:40:15調べたいことがあったらその時バッファにカーソル下の該当ワード拾ってヘルプウィンドウ開くさ。
Windows流の窓最大化文化ばかりが全てじゃないって話。
0147デフォルトの名無しさん
2009/10/17(土) 22:43:39アイテム以外のところ?
だったら、Designerで格上げ機能を使えば、カスタムクラスみたいにできるよ。
でもこれだと、カスタムクラスを書くのと変わらないかもしれない。
コードを書くのででいいのならば、イベントフィルターをそのGraphicsViewにインストール
すれば、イベントをハンドルできるよ。
でも、GraphicsViewをカスタムクラスを使わないで作るのって大変じゃない?
0148デフォルトの名無しさん
2009/10/17(土) 22:47:36補間ウインドウ? 最大化?
お前さ、実はしらんだろ。何も。
0149デフォルトの名無しさん
2009/10/17(土) 22:55:04Autodesk?Mayaで使うの?そのうちPyQtスレが必要になるのかも知れないなあ
0150デフォルトの名無しさん
2009/10/17(土) 22:57:38企業サポート
LGPL
Qt Creator
WebKit統合
マルチメディア統合
組み込み・モバイル対応
開発速度も速い。
0151デフォルトの名無しさん
2009/10/17(土) 23:01:15レスありがとうございます。
Designerの格上げってサブクラス作るって事なのですね。。
格上げするのはいいけど、格上げしたクラスのヘッダファイルがないと言われました。
これがカスタムクラス書くのと変わらないという意味なのでしょうか。
イベントフィルター云々はどのようにやるのでしょうか?
やりたいことは、単に何かのコントロール(QtではWidget?)に絵を表示させて、
マウスを当てたらその座標の画素の色情報をツールチップかなんかで見れるということです。
.NETだとイベントを選べば、勝手に関数ができてそこにコードを書くだけで良かったのですが、
Designer使ってもそこまで簡単には行かないっぽいのかな。
0152デフォルトの名無しさん
2009/10/17(土) 23:07:51PySideががんばっている分、 boost.python もどんどん良くなってる。
0153デフォルトの名無しさん
2009/10/17(土) 23:09:50>組み込み・モバイル対応
iPhone でも Android でも webOS でも使えないんだよね?
Maemo は結局 Gtk+ のままだし、Qtopia は Zaurus も
とっくにディスコンになって、どうなるんだろね
0154デフォルトの名無しさん
2009/10/17(土) 23:20:33前スレ(Qt総合スレ4)の804、805、811、816、819、820、821を呼んでみたらいいと思う。
特に、816以降。
こちらでは、グーグルで検索して、キャッシュで見ることができた。
話は変わるけど。
こっちで試してみたら、2回目の起動で日本語化された。
もう一回起動してみても日本語化されない。
0155154
2009/10/17(土) 23:21:37>もう一回起動してみても日本語化されない。
もう一回起動してみても日本語化されない?
0156デフォルトの名無しさん
2009/10/17(土) 23:35:44QtはNokiaが買収したんだぜ?
スマートフォン世界最大販売数を誇るSymbian提供してるところに
0157デフォルトの名無しさん
2009/10/17(土) 23:37:03>もし可能であればネットワークにQtを置いて、環境変数でそこを指すようにして、
>ネットワークで共有、ってことをやりたい。
>それが出来るんならまぁ使ってもいいかな、って気がします。
今は無理だけど、将来そうなると思う。
>ところで、wxPythonと比較してPyQtは何に優れてるんですかね。
>AutodeskがPyQtを推す意味って何なんだろうか。
Pythonは詳しくないけどC++でいえば、やっぱり楽にプログラミングできる
ことじゃない?
PythonのバインディングにPySideも加わった。
ttp://sourceforge.jp/magazine/09/08/20/072238
0158デフォルトの名無しさん
2009/10/17(土) 23:43:59>Maemo は結局 Gtk+ のままだし、Qtopia は Zaurus も
>とっくにディスコンになって、どうなるんだろね
Qt4.6でMaemoのサポートが入ってくる。
ttp://journal.mycom.co.jp/articles/2009/10/15/qtdev1/
ttp://qt.nokia.com/about/news/nokia-releases-qt-4.6-and-qt-creator-1.3-betas-including-support-for-symbian
0159デフォルトの名無しさん
2009/10/17(土) 23:44:13開発者を S60 から Qt に移行させるのは大変だと思うぜ。
最大販売数って言うけど、Qt なんか関係ないローエンドの機種を
大量に売ってるからじゃなかったっけ。ハイエンド機種も日本じゃ
売ってないし、iPhone や Android に比べてどうだろうね。
0160デフォルトの名無しさん
2009/10/17(土) 23:52:04Maemo のネイティブ API も Qt ベースになるんだね。
古い情報を見てたわ。
http://wiki.maemo.org/Qt4_Hildon
0161デフォルトの名無しさん
2009/10/17(土) 23:56:14凄いスピードで進んでいると思うよ。
停滞しているどっかの何かよりかは
ずっと期待できるな。
0162デフォルトの名無しさん
2009/10/18(日) 00:08:07もっとも、製品に乗るのは早くても来年の終わりか再来年になるだろうけど。
けど、日本ではあまり関係なさそうだな。
もう一度日本市場に戻ってくるかは疑問だし、戻ってきたとしても売れるかというと。
Symbian Foundation にも Qt が入ってくるだろうから、そのときに
日本で Symbian 使ってるところが使うことになるのかな。
0163デフォルトの名無しさん
2009/10/18(日) 00:30:14>NOKIA は Maemo も Symbian も全部 Qt ベースにするつもりだね。
>もっとも、製品に乗るのは早くても来年の終わりか再来年になるだろうけど。
下記に、Qt4.6 のリリース予定は、2010年の第1四半年となっているけど、
これだとそれくらいになるの?
http://qt.nokia.com/about/nokia-announces-official-qt-port-to-maemo-5
0164デフォルトの名無しさん
2009/10/18(日) 00:39:41ttp://blogjp.symbian.org/
ここで、YouTubeにアップされた携帯電話で動くQtのデモのが見れる。
下記はリンク元。Qtのデモ映像がたくさん見れる。
http://www.youtube.com/user/QtStudios
0165デフォルトの名無しさん
2009/10/18(日) 01:54:45>Designerの格上げってサブクラス作るって事なのですね。。
>格上げするのはいいけど、格上げしたクラスのヘッダファイルがないと言われました。
カスタムクラスなんだけど、格上げは、Designerで配置したQWidgetなどに、
カスタムクラスを組み込むもの。
だから見た目は、Designer上で設定できて、なおかつそのクラスの振る舞い定義として、
コードを各個とができる。
通常のサブクラス化で行うようなクラスヘッダファイルと、実装ファイルを定義すればよい。
>これがカスタムクラス書くのと変わらないという意味なのでしょうか。
そう。結局コード書かないといけないという意味で。
>イベントフィルター云々はどのようにやるのでしょうか?
QObjectを継承したクラスのイベントをハンドルできる機能。
QWidgetもQObjectを継承しているから、ほかのウィジットのイベントをハンドルできる。
イベントをハンドルする側にeventFilter()を定義し、ここでイベント処理の内容を書く。
そして、イベントをハンドルされる側のinstallEventFilter()をコールして、
イベントをハンドルする側のオブジェクトを引数として渡す。
0166165
2009/10/18(日) 01:57:05>やりたいことは、単に何かのコントロール(QtではWidget?)に絵を表示させて、
>マウスを当てたらその座標の画素の色情報をツールチップかなんかで見れるということです。
例えばメインウィジットMainWidgetがイベントをハンドルする側で、イベントをハンドルされる側が
PictWidgetとすると、MainWidgtにeventFilter()を定義し、
pictWidget->installEventFilter(mainWindow);
などすればよい。
MainWidet::eventFilter()は、例えば次のようになる。
bool
MainWidget::eventFilter(QObject* iObject, QEvent* iEvent)
{
Q_UNUSED(iObject);
if(iEvent->type() == QEvent::MouseButtonPress) {
// ここに処理を書く
return true;
}
return false;
}
なお、もちろんイベントをハンドルするクラスを独立に定義してもよい。
イベントフィルタでは、全部のイベントがハンドルできるから特定のイベントをif文で
切り分けなければならない。
個人的には、イベントフィルター専用クラスを用意して使いまわすようなことがないのなら、
やっぱり、通常のカスタムクラスか格上げのほうがいいような気がするけど。
0167165
2009/10/18(日) 01:58:51訂正
>コードを各個とができる。
コードを書くことができる。
0168165
2009/10/18(日) 02:08:20ごめん。再び訂正
bool
MainWidget::eventFilter(QObject* iObject, QEvent* iEvent)
{
if(iObject == pictWidget) {
if(iEvent->type() == QEvent::MouseButtonPress) {
// ここに処理を書く
return true;
}
return false;
} else {
return QWidget::eventFilter(obj, event);
}
}
上記の
return QWidget::eventFilter(obj, event);
のQWidgetは、MainWidgetの基底クラスと仮定して書いた。
0169デフォルトの名無しさん
2009/10/18(日) 02:13:22再び訂正
誤)return QWidget::eventFilter(obj, event);
正)return QWidget::eventFilter(iObject, iEvent);
0170デフォルトの名無しさん
2009/10/18(日) 02:13:28ttp://blog.taikomatsu.com/2008/06/21/pyqt4メモ/
0171デフォルトの名無しさん
2009/10/18(日) 13:42:32>Designerの格上げってサブクラス作るって事なのですね。。
>格上げするのはいいけど、格上げしたクラスのヘッダファイルがないと言われました。
格上げとは、DesignerプラグインにはしていないウィジェットをDesignerのフォームで使えるようにする機能です。
例えば、QPushButtonを継承して作ったPushButtonウィジェットがあって、Designerプラグインにはしていないとします。
そうすると、これから作ろうとするフォームにPushButtonウィジェットを入れることができません。そこで、Designer
で既に使えるようになっているQPushButtonを格上げ、つまり、サブクラスのPushButtonと入換えれば、殆どの属性は
同じなので、独自に追加したプロパティの他は、Designerで操作しながらフォームを作成できます。PushButtonは、
別に作成しておくクラスなので、その実装コードやヘッダーは別に用意します。PushButtonは、C++のみで作成してもよいし、
Designerを使って作成してもよいです。
0172デフォルトの名無しさん
2009/10/18(日) 13:52:34>819-829 おっけー! 日本語表示になりました。
他の誰かが幸せになれるようにFreeBSD 7.2 でQtCreator導入の手順をまとめておきます。
==================================================
1. portsからmake install
# cd /usr/ports/devel/qtcreator
# make install
2. そのままだと(参照する翻訳ファイルの名前が間違えているので)日本語で表示されないのでリンクを張る
# cd /usr/local/share/qtcreator/translations
# ln -s qtcreator_ja.pm qt_ja_JP.qm
3. 環境変数のLANGを日本語ロケール(うちの場合はja_JP.UTF-8)にしてqtcreatorを立ち上げればメニュー等が日本語で表示される
# exports LANG=ja_JP.UTF-8
==================================================
0173デフォルトの名無しさん
2009/10/18(日) 15:07:510174デフォルトの名無しさん
2009/10/18(日) 15:26:07QWidgets配置をdesignしたschemeをXMLとかで出力して
それに応じてプログラム中でautoでQWidgetsを
配置していってくれるツールはありますか?
0175デフォルトの名無しさん
2009/10/18(日) 15:29:39* C++のソースに直接記述 必要なクラスを作成して,プログラム中に直接記述します.
* XMLでインターフェースを記述 WindowsのXAMLのように,デザインの情報をXML(uiファイル)で記述します.
私は,この方法がもっとも性に合っていますが,QtのインターフェースのXMLのマニュアルを見つけることができませんでした.今のところ,諦めています.
* Qt Designerでuiファイルを作成 マウスとキーボードを用いて,uiファイルを作成します.もっとも手軽に,インタフェースの作成ができるでしょう.
0176デフォルトの名無しさん
2009/10/18(日) 15:34:240177デフォルトの名無しさん
2009/10/18(日) 15:58:59>PushButtonは、C++のみで作成してもよいし、Designerを使って作成してもよいです。
Designerで作成する方法は、今のバージョンでも使用できる?
0178デフォルトの名無しさん
2009/10/18(日) 16:15:04出来ました
ありがとうございました
0179デフォルトの名無しさん
2009/10/18(日) 17:30:03Qt Creatorと併せて使えばできます。
Qt Creatorの "新規作成" の "Qt デザイナフォームクラス" を使えば、
フォームに加えて実装部とヘッダー部のテンプレートが作られます。
0180デフォルトの名無しさん
2009/10/18(日) 17:39:52Qt Desingerで配置して、QUiLoaderを使うというのはどうですか。
Qt 4.5: QUiLoader Class Reference
http://doc.trolltech.com/4.5/quiloader.html
0181デフォルトの名無しさん
2009/10/18(日) 17:58:16ありがとうございます
>>176さんのところに書いてありました
0182デフォルトの名無しさん
2009/10/18(日) 18:15:42横から便乗だけど
PyQt でも QUiLoader 使える?
0183デフォルトの名無しさん
2009/10/18(日) 18:21:28ダメポ
12 Using Qt Designer
Qt Designer is the Qt tool for designing and building graphical user interfaces.
It allows you to design widgets, dialogs or complete main windows using on-screen
forms and a simple drag-and-drop interface. It has the ability to preview your
designs to ensure they work as you intended, and to allow you to prototype them
with your users, before you have to write any code.
Qt Designer uses XML .ui files to store designs and does not generate any code
itself. Qt includes the uic utility that generates the C++ code that creates
the user interface. Qt also includes the QUiLoader class that allows an application
to load a .ui file and to create the corresponding user interface dynamically.
PyQt does not wrap the QUiLoader class but instead includes the uic Python module.
Like QUiLoader this module can load .ui files to create a user interface dynamically.
Like the uic utility it can also generate the Python code that will create the user
interface. PyQt's pyuic4 utility is a command line interface to the uic module.
Both are described in detail in the following sections.
ttp://www.riverbankcomputing.co.uk/static/Docs/PyQt4/pyqt4ref.html
ttp://www.nabble.com/QtUiTools,-QUiLoader-and-uic-module-td19878875.htmlhttp://www.nabble.com/QtUiTools,-QUiLoader-and-uic-module-td19878875.html
0184デフォルトの名無しさん
2009/10/18(日) 18:28:15レスありがとう。
でも知りたいのは、Qt Creatorではなく、今のバージョンのDesignerにPushButtonを
作る機能があるのかないのかが知りたいんです。
0185デフォルトの名無しさん
2009/10/18(日) 18:33:36それ出来るっていう意味で書かれてるんじゃないの?
0186デフォルトの名無しさん
2009/10/18(日) 18:36:38うらやましい限りだ。
0187デフォルトの名無しさん
2009/10/18(日) 18:42:27Gtkスレってどれのこと?
0188デフォルトの名無しさん
2009/10/18(日) 18:51:200189デフォルトの名無しさん
2009/10/18(日) 18:58:14Gtkプログラミング on Windows!!!
http://pc12.2ch.net/test/read.cgi/tech/1147024203/
上のスレのことだけど、他にもあったのか?
0190デフォルトの名無しさん
2009/10/18(日) 19:01:13やっぱりこれのことか。
ありがとう。
Gtkならほかにもスレッドがありそうな気がして、自分が見落としているのかと思って。
0191デフォルトの名無しさん
2009/10/18(日) 19:09:13GTK+プログラミング
http://pc11.2ch.net/test/read.cgi/linux/1188968326/
0192デフォルトの名無しさん
2009/10/18(日) 19:11:29Windowsで使うものじゃないと
なぜか決めつけてかかってる俺
0193デフォルトの名無しさん
2009/10/18(日) 19:24:50Win : 色々ある
UN*X : ほぼ Gtk+
Mac OS X : ほぼ Cocoa
0194デフォルトの名無しさん
2009/10/18(日) 20:10:250195デフォルトの名無しさん
2009/10/18(日) 20:28:35ありがとう。
見てきた。
0196デフォルトの名無しさん
2009/10/18(日) 21:19:24Designerは、フォームの上にウィジェットを並べる機能のみを提供するので、
将来サブクラスを作れるような機能は追加されません。
0197デフォルトの名無しさん
2009/10/18(日) 21:26:250198デフォルトの名無しさん
2009/10/18(日) 21:38:210199デフォルトの名無しさん
2009/10/18(日) 23:25:59ありがとう。
0200デフォルトの名無しさん
2009/10/18(日) 23:27:18ファイル数増えたら見づらくなりそう。
0201デフォルトの名無しさん
2009/10/18(日) 23:41:59QUiLoader そのものはだめだけど uic.loadUi で逝けるみたい
import sys
from PyQt4 import QtCore, QtGui, uic
class HelloWindow(QtGui.QMainWindow):
def __init__(self, *args):
QtGui.QMainWindow.__init__(self, *args)
uic.loadUi('mydesign.ui', self)
self.connect(self.myPB, QtCore.SIGNAL('clicked()'), self.onMyPBClicked)
@QtCore.pyqtSignature('')
def on_myPB_clicked(self):
print 'a'
def onMyPBClicked(self):
QtGui.QMessageBox.information(self,
self.tr('clicked'), self.tr('hoge'))
app = QtGui.QApplication(sys.argv)
w = HelloWindow()
w.show()
sys.exit(app.exec_())
ttp://techbase.kde.org/User:Axiom
0202デフォルトの名無しさん
2009/10/19(月) 00:02:46MainWidget
+PictWidget
+StatusBar
みたいに、メインウィンドウ上に画像Widgetとステータスバーがあり、
画像の画素情報をステータスバーにも反映させたいような場合、
MainWidgetでイベント処理するのが適当だと思うのですが、
mouseMoveEvent()メンバ関数をオーバーライドするような感じではないのですね。
もう少し勉強してみます。ありがとう。
仮にDesignerで何らかのWidgetを格上げしたPictWidgetのmouseMoveEvent()を
オーバーライドして処理しようにも、親のMainWidgetのメンバ(例えばStatusBar)とかアクセスできない
ですよね。入門Qt4プログラミングは購入したので、7章あたり読んでみます。
0203デフォルトの名無しさん
2009/10/19(月) 00:03:19ありがとうございます
@QtCore.pyqtSignature('')
def on_myPB_clicked(self):
print 'a'
これだけでも呼ばれているってことは
connectも自動でやってくれるんですね
0204デフォルトの名無しさん
2009/10/19(月) 00:06:27myPB の位置を XML で property geometry で指定してても
その位置に出て来ないですね
指定の仕方が間違ってるのかな
もう少し勉強してみます
0205デフォルトの名無しさん
2009/10/19(月) 00:20:33次期リリースの1.3のベータ版なら実ファイル階層を区分けして表示してくれるよ。
ただし、ヘッダ、実装ファイル、リソースファイルなどに大きく区分けされて、
その中にそれぞれのフォルダーが表示される。
ただし、この版では日本語化されていないし、日本語の入力もできなかった。
(環境がLinuxでの話)
http://qt.nokia.com/developer/qt-creator-1.3-preview
下記のYouTubeのQtStudiosのQt Creator-Rename, find...というのを見れば、
新しく実装されたリネームや検索機能の使用の様子が見れるよ。
ここには、その他にもQt Creatorの使っている様子などアップされている。
http://www.youtube.com/user/QtStudios
0206デフォルトの名無しさん
2009/10/19(月) 00:27:250207デフォルトの名無しさん
2009/10/19(月) 00:52:23>MainWidget
>+PictWidget
>+StatusBar
QtのQMainWindowには、MenuBar、ToolBar、DockWidget、CentralWidget、StatusBar
を配置する場所が予め用意されているから、通常は、ステータスバーはメインウィジットに配置する。
MainWidgetがQMainWindowを継承していないのならば、継承させた方が楽できていいと思うけど。
下記に、メインウィンドウと書いてあるから、QMainWindowから派生していたら、ごめん。
>MainWidget
>+PictWidget
>+StatusBar
>みたいに、メインウィンドウ上に画像Widgetとステータスバーがあり、
>画像の画素情報をステータスバーにも反映させたいような場合、
>MainWidgetでイベント処理するのが適当だと思うのですが、
>mouseMoveEvent()メンバ関数をオーバーライドするような感じではないのですね。
>もう少し勉強してみます。ありがとう。
1例として、PictWidgetでは、クリックされたらそれを知らせるシグナルを発生するようにし、
引数として、必要な情報を渡すようにする。
そして、MainWindowにスロットを定義して、そこで処理関数を書けばよい。
もちろん両者を接続する必要する。
0208207
2009/10/19(月) 00:53:19>>202
>仮にDesignerで何らかのWidgetを格上げしたPictWidgetのmouseMoveEvent()を
>オーバーライドして処理しようにも、親のMainWidgetのメンバ(例えばStatusBar)とかアクセスできない
>ですよね。入門Qt4プログラミングは購入したので、7章あたり読んでみます。
Qtでは、Widgetに親子関係がある。通常コンストラクト時に親ウィジットを引数として渡す。
あるいは、レイアウトクラスが参照処理を行ってくれる。
だからparentWidget()をコールすれば親ウィジットのパブリックな関数をコールできる。
このばあい、
MainWindow* mainWindow= qobject_cast<MainWindow*>(parentWidget());
if(mainWindow) {
//...
}
のようにキャストの必要がある。
それに、親ウィジットに限らず、必要なら通常C++と同様にのメンバーポインターとして
ほかのウィジットを参照させればいいだけ。
0209207
2009/10/19(月) 00:57:33>>202
>ですよね。入門Qt4プログラミングは購入したので、7章あたり読んでみます。
ごめん、購入したいとは思っているんだけど、まだ買ってない。
0210207
2009/10/19(月) 01:02:16>オーバーライドして処理しようにも、親のMainWidgetのメンバ(例えばStatusBar)とかアクセスできない
>ですよね。
MainWidgetがQMainWindowを継承しているのならば、StatusBarを取得する関数がある。
無ければ自分で書けばいいだけの話のような気がするけど。
0211207
2009/10/19(月) 01:26:31>MainWidgetでイベント処理するのが適当だと思うのですが、
これは、設計によりけりだと思う。
>mouseMoveEvent()メンバ関数をオーバーライドするような感じではないのですね。
上で書いた方法で、StatusBarを参照できるから、この方法、つまりCentralWidgetが
自分に関する処理を自分で行うのも、ありだと思うけど。
0213デフォルトの名無しさん
2009/10/19(月) 02:18:500214デフォルトの名無しさん
2009/10/19(月) 02:59:28205に書いてある通り、開発版では実装済み。
リンクたどって、開発版を試しにインストールしてみれば試せるよ。
0215デフォルトの名無しさん
2009/10/19(月) 03:10:38MSVCなら可能。MinGWは、コンパイラーが対応してないせいで今のところ無理みたい。
http://doc.trolltech.com/4.5/supported-platforms.html
0216215
2009/10/19(月) 03:14:380217213
2009/10/19(月) 03:25:20バイナリ無くてコンパイルに時間がかかるから試行錯誤にも時間がかかる。
やりかた書いて良いよね? でも疲れたから今日は寝る。
一応qt creatorの64bit版を置いとく。
ftp://ftp.trolltech.com/qtcreator/snapshots/2009-05-25/
64bit版を使わないとデバッグができない。32bit プロセス(qt creator)から
64bit DLL(CDBデバッガ)を読み込めないから当然か。
残念ながらこれ以降、今日までの間に64bitバイナリは無いようだ。
最新のが使いたいなら自分でコンパイルしろと。
0218デフォルトの名無しさん
2009/10/19(月) 15:19:29なかなか調子よく動くんで喜んでいたら,UNICODE関連で引っ掛かった。
::MessageBox(NULL, "こんにちは", "Title", MB_OK);
と書いたら,コンパイルエラーになったので,MessageBoxAに変えたらコンパイル通って,ちゃんと
動いた。つーことは _UNICODE が定義されてるってことだよね。
ソースファイルは他のエディタで開いてみたらShift_JISだったので,
::MessageBox(NULL, L"こんにちは", L"Title", MB_OK);
にしてみたり,tchar.hをインクルードして,
::MessageBox(NULL, _T("こんにちは"), _T("Title"), MB_OK);
と書いてもコンパイルエラーになる(もちろんMessageBoxWでも同じこと)。
MinGW32-g++のコマンドラインオプションに -finput-charset=CP932 と -fexec-charset=CP932 を
設定すれば直ることはわかってるんだが,ヘルプを見てもプロジェクトファイル(.pro)にそのような
指定はできないようだし,どこかで設定できないのかな?
今回の例はMessageBoxなのでQMessageBox使えって言われそうだけど,他にもAとWの両方が
あるWIN32 APIは沢山あるわけで,どうやって解決したらいいのか知ってる人がいたら教えてください。
0219デフォルトの名無しさん
2009/10/19(月) 15:44:01わざわざWindows専用のMessageBoxなんて使うの?
QMessageBoxつかえばいいじゃない。
0220219
2009/10/19(月) 15:45:33言い直す、
他にもWIN32 APIの代わりのQなんたらがあるじゃない。
0221デフォルトの名無しさん
2009/10/19(月) 15:47:530222デフォルトの名無しさん
2009/10/19(月) 15:58:140223218
2009/10/19(月) 16:04:02Qtの設計思想からして,何でも揃ってるんなら,そういう行き方で行くべきなんでしょうね。
始めたばかりだからよくわからないんですが,WIN32 APIにあるような機能をもったものは,
ほぼ何でもあるんでしょうか?
>>220
ですね。よく調べたら定義済みなのは UNICODE で _UNICODEじゃなかったので_T( )を使った場合は
::MessageBoxAが呼び出されてたんですが,少なくとも,
::MessageBoxW(NULL, L"こんにちは", L"Title", MB_OK);
と書くと,
C:/Documents/Software/Qt/DialogTest/mainwindow.cpp:35: error: converting to execution character set: Illegal byte sequence
というエラーメッセージが出ます。MinGW32-g++のコマンドラインオプションに -finput-charset=CP932
と -fexec-charset=CP932 を書くと,ソースコードがSJISでも問題ないことはQtとは無関係の他のIDEで
確認済です。
0224デフォルトの名無しさん
2009/10/19(月) 16:13:530225218
2009/10/19(月) 16:21:11自己レス。
> ですね。よく調べたら定義済みなのは UNICODE で _UNICODEじゃなかったので_T( )を使った場合は
> ::MessageBoxAが呼び出されてたんですが,
この記述はウソでした。_T( )が wchar_t* じゃなくて char* になってたんでした。呼び出されるのはMessageBoxW
の方です。いずれにしろL""を使ってMessageBoxWを呼び出すとエラーになります。
>>222
どこで保存時のエンコードを指定するんでしょうか? 外部エディタでUTF-8で保存し直すのですか?
それともQt Creatorの設定でフォントにMS ゴシックを指定したのがいけなかったのかな?
>>224
それはないと思います。仮にそうだとしても,Qt Creatorのどこでコンパイラのコマンドラインオプションを
指定するのでしょうか?
0226デフォルトの名無しさん
2009/10/19(月) 16:25:54QMAKE_CXXFLAGS += --input-charset=cp932 --exec-charset=cp932
0227デフォルトの名無しさん
2009/10/19(月) 16:41:40左の"Projects"ボタンから下の方に
"Editor Settings" として "Default File Encoding" がある。
また、開いているファイルには"Edit"に文字コード指定用の項目がある。
0228218
2009/10/19(月) 16:47:15.pro ファイルにそのように書いたらうまく行きました。
ヘルプをよく探してみたら「qmake Platform Notes」に載ってました。
ヘルプの「qmake Advanced Usage」のところを見ていたら,グローバルに定義したい
#define のやり方も書いてありました。
「qmake Variable Reference」にいろいろ載ってますね。じっくり読んでみます。
助かりました。ありがとうございました。
0229218
2009/10/19(月) 16:56:41おっしゃるとおりありました。
UTF-8に変えたら,>>226で教えていただいた方法を使わなくてもすんなり行きました。
用途によって使い分けます。
ありがとういございました。
0230デフォルトの名無しさん
2009/10/19(月) 17:36:320231デフォルトの名無しさん
2009/10/19(月) 17:57:12使ってるんだよな〜
0232デフォルトの名無しさん
2009/10/19(月) 19:48:39WindowsはいつまでSJISに縛られるんだろう
0233デフォルトの名無しさん
2009/10/19(月) 19:50:140234デフォルトの名無しさん
2009/10/19(月) 20:04:300235デフォルトの名無しさん
2009/10/19(月) 21:50:49リファレンスのQFileDialog::getOpenFileName()のところに
”On Windows the dialog will spin a blocking modal event loop that will not dispatch any QTimers”
とあるけどこれはどういう意味か教えてください。
ttp://doc.trolltech.com/4.5/qfiledialog.html#getOpenFileName
0236デフォルトの名無しさん
2009/10/19(月) 22:00:15L""やTEXT(),_T()書いたからと言って、SJISでソースかいてりゃ文字列リテラルの中身はSJISだ。
それをUnicodeですと言いはればそりゃコンパイラも怒るわ。
0237デフォルトの名無しさん
2009/10/19(月) 22:12:20Qt Creator起動時に
Failed to load core: QTパス/lib/qtcreator/plugins/Nokia/Core.dll: Cannot load library QTパス/lib/qtcreator/plugins/Nokia/Core.dll:
指定されたモジュールが見つかりません。っていわれる。ちゃんとDLLあるのに・・・
0238デフォルトの名無しさん
2009/10/19(月) 22:13:540239デフォルトの名無しさん
2009/10/19(月) 22:21:420240237
2009/10/19(月) 22:33:31エラーメッセージ紛らわしい。
でもQt creatorは起動したがまだコンパイルできず。
jom.exeってなんだ? どうすれば現れる?
0241デフォルトの名無しさん
2009/10/19(月) 22:36:57もしかして別作者のツール?
とりあえずこれでWindows 64bitへの旅は終わったかな?
0242デフォルトの名無しさん
2009/10/19(月) 22:38:57調べるツールとかしりませんか?
他にもいろいろ情報を知りたい。
7zipでDLLを開いてそのプロパティで調べたけどw
0243デフォルトの名無しさん
2009/10/19(月) 23:07:51jom も Nokia(Qt) のツール。
nmake でサポートしてない並列ビルドをするためのツール。
詳しくは下記を参考に。
ttp://labs.trolltech.com/blogs/2009/03/27/speeding-up-visual-c-qt-builds/
ttp://qt.gitorious.org/qt-creator/pages/FrequentlyAskedQuestions
0244デフォルトの名無しさん
2009/10/20(火) 04:14:380245218
2009/10/20(火) 05:59:18あんたわかってないね。
VC++やBCCはSJISのソースコードでL""と書けばそれをコンパイラが自動的にワイド文字列に
変換するし(何の指定も必要なし)、MinGW gccだって -finput-charset=CP932 と指定すれば
SJISでL""で書いた文字列リテラルをきちんとワイド文字列に変換する。
MinGW gccはたまたまデフォルトがUTF-8なだけ。そもそもUTF-8はWIN32 APIの
何たらW( )関数が要求するwchar_t*文字列(UTF-16LE)とはエンコーディングが
違う。dmcなんかはL""と書いても_T( )と書いても受け付けてくれないので、
\uを使って文字コードで書く必要があるんだよ(Digital Mars スレの261に
これを解決する方法を書いた)。
要するにコンパイラ依存の問題なわけで、
> L""やTEXT(),_T()書いたからと言って、SJISでソースかいてりゃ文字列リテラルの中身はSJISだ。
> それをUnicodeですと言いはればそりゃコンパイラも怒るわ。
なんて単純な話じゃない。あんたUNICODEは一種類だと思ってるのか?
Qt Creatorだって、VCでやれば、逆にソースコードをUTF-8で書いたらL""のコンパイル
通らなくなると思うよ(VCが頭良くて、自動変換する可能性はあるけど)。
0246デフォルトの名無しさん
2009/10/20(火) 08:51:34ソースに日本語コメントが有って
utf-8で保存されてたりするだけで
コンパイルすら通らなくなります
0247デフォルトの名無しさん
2009/10/20(火) 09:00:11インストール時に項目をチェックしてないのではないかな?
0248デフォルトの名無しさん
2009/10/20(火) 09:19:15UTF-8ってのはASCIIコード互換なんだよ。そのように作られている。
ASCIIの文字の範囲なら1バイト、それ以外なら最大4バイトの可変長文字コード
だから、ソースに日本語が入っていてもUTF8なら
ASCII文字と認識されるだけなので、コンパイルが通らないことは無い。
0249デフォルトの名無しさん
2009/10/20(火) 09:23:38jom ぱねぇwww
マルチコア使い切ってる。長いQtのコンパイル時間が半分になるw
これ本当にnmake完全互換ってことでいいのかな?
それならQt以外でも使えるな。nmakeにリネームしてやるかw
0250デフォルトの名無しさん
2009/10/20(火) 10:41:40>MinGW gccはたまたまデフォルトがUTF-8
GCCのデフォルトはASCIIでは?
0251デフォルトの名無しさん
2009/10/20(火) 10:50:55Qtのファイル取得ダイアログは、デフォルトではWindows固有のファイル取得ダイアログを
呼出してイベント処理されるため、そのファイル取得ダイアログの表示中には、
Qtの主イベントループで処理されるタイマーは、タイムアウトしても直ぐには処理されません。
0252245
2009/10/20(火) 10:51:47正しくはそう言うべきなのかもしれないが,>>248の言うとおりUTF-8はASCII互換なので,
UTF-8でソースコードを書いてL""の""の中に日本語書いても異常なコードとは認識せず,
ちゃんとUTF-16に変換してくれるので,「なんたらW」のWIN32 APIを呼び出したとき文字化けしない。
本家gccは知らないが,MinGW gccはそうなってるよ。
0253デフォルトの名無しさん
2009/10/20(火) 11:15:32プロパティにはそれに相当するものはなさそうだったので,MainWindowのコンストラクタに,
QPoint screenCenter = QApplication::desktop()->screen()->rect().center();
setGeometry(screenCenter.rx() - width() / 2, screenCenter.ry() - height() / 2, width(), height());
って書いて一応解決したんだけど,もっと良いやり方はありませんか?
0254235
2009/10/20(火) 11:38:57ありがとうございます。
理解できました。
0255デフォルトの名無しさん
2009/10/20(火) 11:54:57UTF-8だよ。3.xも4.xも。
0256デフォルトの名無しさん
2009/10/20(火) 12:37:25タイトルバーを含めて中心に表示するのならば、frameGeometry()を使うというのもありそうです。
Qt 4.5: Window Geometry
http://doc.trolltech.com/4.5/geometry.html
QDialogの親を0にするとデスクトップの中心に表示されるので、そのコードを調べてみるというのはどうですか。
0257デフォルトの名無しさん
2009/10/20(火) 13:15:10ありがとうございます。
理解できました。
0258デフォルトの名無しさん
2009/10/20(火) 13:23:35今のところ、256の人が書いているように、Dialog以外でメインウインドウを
含めてWidgetをダイレクトにスクリーンの中央に表示させる関数や属性は、
Qtには実装されていないと思う。
だから、コンストラクタにコード書くしかないんじゃない。
知っているかもしれないけど、QSettingsを使って、設定値を覚えさせるようにしておけば、
次回起動時に終了時の位置やサイズで表示されるようになる。
初回起動時は、中央に表示されなくても2度目からユーザーが好みのMainWindowの位置を
指定できるので、これで十分だと思うけど。
ちなみに、最大化するのなら下記のコードが有効。
setWindowState(windowState() ^ Qt::WindowMaximized);
show();
0259デフォルトの名無しさん
2009/10/20(火) 13:26:150260253
2009/10/20(火) 16:45:03レスありがとうございます。
> タイトルバーを含めて中心に表示するのならば、frameGeometry()を使うというのもありそうです。
なるほど,そちらの方が正確に中心に来ますね。
> QDialogの親を0にするとデスクトップの中心に表示されるので、そのコードを調べてみるというのはどうですか。
これはgrepを使ったりしてやってみましたが,QDialogのparentを0にしてコンストラクタを呼び出すと,
基底クラスであるQWidgetのコンストラクタのparentが0で呼び出されるところまではわかりましたが,
それ以上はd_func()なる謎の関数が出てきて追いきれませんでした(grepで膨大な件数がマッチした)。
>>258
> 知っているかもしれないけど、QSettingsを使って、設定値を覚えさせるようにしておけば、
> 次回起動時に終了時の位置やサイズで表示されるようになる。
> 初回起動時は、中央に表示されなくても2度目からユーザーが好みのMainWindowの位置を
> 指定できるので、これで十分だと思うけど。
> ちなみに、最大化するのなら下記のコードが有効。
> setWindowState(windowState() ^ Qt::WindowMaximized);
> show();
いえ,知らないことばかりで勉強になります。
ご教示ありがとうございます。
0261デフォルトの名無しさん
2009/10/20(火) 21:30:29ソースコードの文字コードについてだけど、VCでのUTF-8はBOMありをUTF-8と認識する。
BOMなしUTF-8でやっていると、あるとき突然コンパイル時エラーやら警告が出たりする。(これが246の言っていることかな)
gccはBOMなしUTF-8しかダメで、これのせいで、両方でUTF-8でソースコードが共通化できなかった。
結局、Shift-JISで統一して、gccでinput-charsetオプションでごまかした。
(なんで同じUTF-8でこうもコンパイラの対応が異なるかと思う)
0262デフォルトの名無しさん
2009/10/20(火) 22:54:080263デフォルトの名無しさん
2009/10/20(火) 22:54:480264デフォルトの名無しさん
2009/10/20(火) 22:59:200265デフォルトの名無しさん
2009/10/20(火) 23:39:05気が狂ってるとしか思えない。
0266デフォルトの名無しさん
2009/10/20(火) 23:45:11Qt Creator 1.3 Beta リリース
ttp://qt-creator-jp.sourceforge.jp/2009/10/14/qt-creator-1-3-beta-%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9/
0267デフォルトの名無しさん
2009/10/21(水) 00:31:440268デフォルトの名無しさん
2009/10/21(水) 00:46:28コメントは英語にするの?
英語が苦手だからちょっときつい。
それに、doxygenなんかを使って、コメントを日本語ドキュメントとして
出力させたいときはやっぱり日本語が必要になる。
0269デフォルトの名無しさん
2009/10/21(水) 01:46:48今時ソースコードにASCII文字以外をかけないってドンだけ遅れてるんだよwwww
0270デフォルトの名無しさん
2009/10/21(水) 02:04:38書けないんじゃなくて、方針として書かないといいたいんだと思う。
でも個人的には、人に押し付けることではない気がする。
それにプロジェクトか何かに参加していて、日本語でコメントを書くのが
決まっていたらそうせざるを得ないし。
0271デフォルトの名無しさん
2009/10/21(水) 02:41:09ttp://nowsmart.s93.coreserver.jp/nws/Japanese/chara_code_compare.htm
0272デフォルトの名無しさん
2009/10/21(水) 03:00:12ttp://msdn.microsoft.com/ja-jp/library/xwy0e8f2.aspx
・BOM (Byte Order Mark) 付き、または BOM なしの UTF-16 リトル エンディアン。
・BOM 付き、または BOM なしの UTF-16 ビッグ エンディアン。
・BOM 付きの UTF-8
0273デフォルトの名無しさん
2009/10/21(水) 03:09:26ttp://wiki.monaos.org/index.php?%B5%C4%CF%C0%2Flibc%2F%A5%EF%A5%A4%A5%C9%CA%B8%BB%FA
gcc-3.4からちゃんとiconvで変換するようになったようです。 gccの-finput-charsetを使うとソースの
文字コードが指定できます。何も指定しない場合はUTF-8として扱われます。
gcj
ttp://wiki.monaos.org/index.php?gcj%2F19
0274デフォルトの名無しさん
2009/10/21(水) 03:13:47ttp://blogs.oracle.com/ezannoni/2008/04/utf16_and_utf32_support_in_gcc.html
なんだこれは、あたらしく文字列型追加したのか
* u'c-char-sequence' char16_t character literal (UTF-16)
* U'c-char-sequence' char32_t character literal (UTF-32)
* u"s-char-sequence" array of char16_t (UTF-16)
* U"s-char-sequence" array of char32_t (UTF-32)
0275デフォルトの名無しさん
2009/10/21(水) 05:34:46ttp://pc12.2ch.net/test/read.cgi/tech/1236529563/
0276デフォルトの名無しさん
2009/10/21(水) 10:33:50文字列にASCII文字以外を書かないようにということじゃないでしょうか。
0277デフォルトの名無しさん
2009/10/21(水) 11:13:17勘違いしてた。ごめん。
0278デフォルトの名無しさん
2009/10/21(水) 22:06:4232bitアプリのデバッグできている人いる?
さらにDebugging Helperまで正常動作している人いる?
一度32bitアプリのデバッグができた気がするんだけど、
Debugging Helperが正常に動かなかった。
もっかいやり直したら、32bitアプリのデバッグまで動かなくなった。
Linuxの場合はどうなってるんだろ?
0279デフォルトの名無しさん
2009/10/21(水) 22:27:100280デフォルトの名無しさん
2009/10/21(水) 22:32:480281デフォルトの名無しさん
2009/10/21(水) 22:37:290282デフォルトの名無しさん
2009/10/21(水) 23:38:59202です。いろいろ教えていただいてありがとうございます。とりあえず以下のように実装してみました。
MainWindow(QMainWindowから派生)
+ImageView(QGraphicsViewから派生, QtDesignerで格上げ)
+statusBar(QStatusBarから派生)
という構成で、
MainWindowにsetStatusBar(int x, int y)というpublicなメンバ関数を作成した。
ImageViewにmousePressEvent()を作成し、
MainWindow* mainWindow = qobject_cast<MainWindow*>(parentWidget());
if (mainWindow)
{
setStatusBar(event->x(), evetn->y());
}
としたのですが、mainWindowが0になって、parentWidget()が機能していないみたいです。
たしかにMainWindowクラスでImageViewのインスタンスを生成した覚えがないのですが、
QtDesignerの格上げを使った場合、この辺どのようにすれば親Widgetのポインタを得ることができるのでしょう?
0283デフォルトの名無しさん
2009/10/22(木) 02:19:55ごめん。説明が足りなかった。あるいは間違っていた。
その前に確認。
>setStatusBar(event->x(), evetn->y());
は
mainWindow->setStatusBar(event->x(), evetn->y());
の間違いだよね。
0284283
2009/10/22(木) 02:21:19(説明)
通常、メインウインドウにはメニュー、ドックウィジット、ステータスバーのほかに、
中心となるウィジットを1つ配置し、その中にレイアウトクラスを使って複数のウィジットを配置する。
この中心となるウィジットのことをQtでは「セントラルウィジット」といっている。
フォームエディタのDesignerやQt Creatorの組込みのもので作成したMainWindowには、
デフォルトでセントラルウィジットとしてQWidgetが配置されていている。
よって、そのままImageViewを配置したのならば、このQWidgetが親ウィジットになる。
(こちらで確認した限り、このセントラルウィジットを取り替える方法が分からなかった。
見落としているような気がするけど。
ソースコードからならQMainWindow::setCentralWidet()でセットできる。)
これは、フォームエディタの右側に表示されるオブジェクトインスペクタとよばれる
クラス名やオブジェクトのレイアウトの状況が分かる部分をみれば分かる。
0285283
2009/10/22(木) 02:22:56また、このセントラルウィジット上で右クリックし、コンテクストメニューの
「レイアウト」->「水平に並べる」などを選べば、セントラルウィジットの中に配置したウィジットに対して
レイアウトを適用できる。また、どうように「レイアウト」->「レイアウトを破棄」を選べば、その
トップレベルのレイアウトを破棄できる。
もちろんレイアウトの中にほかのレイアウトを配置することも可能で、その時は
フォームエディタの左上に表示されるレイアウトオブジェクトをマウスで配置すればよい。
1つ注意したいのは、フォームエディタではセントラルウィジット内のトップレベルレイアウトだけ
ラバーバンド(選択を表す外枠)が視覚化されないので分かりにくい、ということ。
それ以外の、マウスで配置するレイアウトオブジェクトはちゃんとラバーバンドが表示される。
よって、コードは下記のように修正すればちゃんと動くはず。
QWidget* centralWidget = qobject_cast<QWidget*>(parentWidget());
if(centralWidget) {
MainWindow* mainWindow = qobject_cast<MainWindow*>(centralWidget->parentWidget());
if(mainWindow) {
mainWindow->setStatusBar(event->x(), evetn->y());
}
}
0286283
2009/10/22(木) 02:35:06ポインターメンバーとしてMainWindowを持たせ、このクラスにgetMainWindow()を
定義する。
そして、Qtに予め定義されているアプリケーションを指すグローバルなポインターのqApp
を使って、MainWindowを得るようにする。
Application* myApp = qobject_cast<Application*>(qApp);
if(myApp) {
MainWindow* mainWindow = myApp->getMainWindow();
if(mainWindow) {
mainWindow->setStatusBar(event->x(), evetn->y());
}
}
こうすれば、レイアウトのどのレベルにいてもメインウインドウにすぐに
アクセスできるようになる。
0287デフォルトの名無しさん
2009/10/22(木) 04:13:26GUIプログラミング自体が初めてなので、
初歩的な質問をしているかもしれませんが、ご了承ください。
QGraphicsItemから派生させたカスタムクラスを作成し、
変数や関数を宣言しました。main関数でこのカスタムウィジェットからいくつかitemを作成しました。
QGraphicsSceneからインスタンスsceneを作成し、
先ほど作成したクラスから作成したitemをsceneに追加しました。
次に、
QGraphicsItem * QGraphicsScene::itemAt ( const QPointF & position ) const
メソッドを用いて、sceneのある地点のitemを取り出しました。
この取り出したitemから、自分で付け加えた変数や関数を呼び出すことはできないのでしょうか?
QGraphicsScene::itemAt メソッドで取り出したitemの型がQGraphicsItem * ということは分かるのですが、
追加した時点でのitemは自分で作成したカスタムクラスのインスタンスなので、
カスタムクラスで宣言した変数や関数を使用できると思いました。
間違っている点を指摘していただければ助かります。
0288デフォルトの名無しさん
2009/10/22(木) 05:41:37まず、そのカスタムアイテムクラスにenum値として、そのアイテム固有のタイプ値を定義する。
次に、この値を返すtype()を定義する(オーバーライドする)。
下記は、Qt Refrenceより
class CustomItem : public QGraphicsItem
{
...
enum { Type = UserType + 1 };
int type() const
{
return Type;
}
...
}
そして、qgraphicsitem_cast()を使って、そのアイテムをキャストすればよい。
CustomItem customItem = qgraphicsitem_cast(item);
これで、カスタムアイテムのメンバー関数が呼び出せるようになる。
0289288
2009/10/22(木) 05:48:51qgraphicsitem_cast()が返すのは、そのクラスのtype()の値だった。
0290288
2009/10/22(木) 06:19:12CustomItem customItem = qgraphicsitem_cast<CustomItem*>(item);
if(customItem) {
//...
}
でいける。
0291デフォルトの名無しさん
2009/10/22(木) 06:19:43QGraphicsItemから派生させたカスタムクラス *moge = (QGraphicsItemから派生させたカスタムクラス *)hoge;
0292288
2009/10/22(木) 06:22:50CustomItem* customItem = qgraphicsitem_cast<CustomItem*>(item);
if(customItem) {
//...
}
0293デフォルトの名無しさん
2009/10/22(木) 06:31:04従来のキャストだとキャストの失敗を確かめられないから少し不安な気がする。
やはり、qgraphicsitem_castを使った方がいいと思う。
もしくは、RTTIが使用できる最近のコンパイラーならdynamic_castを使った方がいいと思う。
0294287
2009/10/22(木) 08:40:23>>291
私もこのキャストの方法は試したのですが、うまくいっていませんでした。
でも、書き込みのように記述したところ思い通りの動作をするようになりました。
(キャスト)hoge -> customArg;
このように利用していたのですが、
( (キャスト)hoge ) -> customArg;
のように全体の括弧が抜けていることに気が付けました。
>>288
試行錯誤しているときに、ヘルプのqgraphicsitem_castの説明を読んだのですが、
使用法などまったく意味が分かりませんでした。
しかし、指示されたとおりに記述したところ、こちらの方法でも呼び出すことができました。
キャストの種類が複数あるなど、色々と勉強になりました、ありがとうございました。
ただ一つ分からないところがあったので、よかったら教えてください。
CustomItem* customItem = qgraphicsitem_cast<CustomItem*>(item);
ここで、<CustomItem*>のように<>による記述を使っており、これがないとエラーが出るのですが、
なぜ必要なのでしょうか?(C++の勉強不足かもしれない質問ですが、、、)
ヘルプには
T qgraphicsitem_cast ( QGraphicsItem * item )
Returns the given item cast to type T if item is of type T
とあり、どうも理解できません。よろしくお願いします。
0295デフォルトの名無しさん
2009/10/22(木) 09:47:34>ここで、<CustomItem*>のように<>による記述を使っており、これがないとエラーが出るのですが、
>なぜ必要なのでしょうか?(C++の勉強不足かもしれない質問ですが、、、)
<>の中に型を指定して、その型にキャストしたいことを、qgraphicsitem_castに教えるためのもの。
>ヘルプには
>T qgraphicsitem_cast ( QGraphicsItem * item )
>Returns the given item cast to type T if item is of type T
>とあり、どうも理解できません。よろしくお願いします。
リファレンスの記述のしかたが、分かりにくいだけだと思う。
個人的な好みだけれどむしろ
T2* qgraphicsitem_cast<T1*>(QGraphicsItem * item)
と書いてあってキャストに失敗したときT2が0になり、キャストに成功するとT1=T2になる、みたいに表記してあった方が
わかりやすいと思う。
ちなみに、()を使うキャストは、C言語に元々あるキャスト方法で、C++でも使用できる。
C++には、C言語にはないキャストが4種類あってその記述方法では、qgraphicsitem_castのように、<>を用いる。
(ただし、まったく機能が違うという意味ではない。Cのキャストと機能が重なっているものもある。)
qgraphicsitem_castや、qobject_castはQtだけで使用できるキャストで、使用する対象がQObjectであったり、QGraphicsItemに
限定されている。
0296295
2009/10/22(木) 09:58:05>T2* qgraphicsitem_cast<T1*>(QGraphicsItem * item)
>と書いてあってキャストに失敗したときT2が0になり、キャストに成功するとT1=T2になる、みたいに表記してあった方が
>わかりやすいと思う。
C++には、ポインターや通常の変数の他にリファレンスというのがある。
これをキャストするときにも使用する可能性があるので、*をつけた例だけを
示すのはまずい可能性がある。
少なくともC++のdynamic_castは、リファレンスのキャストが可能で、
キャストに失敗したときは例外をスローする。
qgraphicsitem_castがリファレンスに対応しているかは未確認。
0297デフォルトの名無しさん
2009/10/22(木) 11:26:31<type T>
template
0298デフォルトの名無しさん
2009/10/22(木) 13:23:11castのTは、templateという意味はないのでは?
0299298
2009/10/22(木) 13:24:40>castのTは、templateという意味はないのでは?
castのtype Tは、templateという意味はないのでは?
0300デフォルトの名無しさん
2009/10/22(木) 15:13:44wakaran nonara ii
0301デフォルトの名無しさん
2009/10/22(木) 23:41:17シグナルと別のシグナルを接続することは可能ですか?
自分で方法を探しても見つかりませんでした。
0302デフォルトの名無しさん
2009/10/22(木) 23:44:49ありがとう。狙い通りの動作ができました。
ちなみに、statusBarはフォームエディタでMainWindowを作ると、
uiの方で生成されていますが、statusBarにQLabelなどを追加するのは、
フォームエディタではできないですよね?
MainWindow::createStatusBar()のような関数を自作して、
MainWindowコンストラクタのui->setupUi(this);の後で呼ぶような
コードが考えられると思うのですが、そんな感じになるでしょうか。
0303デフォルトの名無しさん
2009/10/23(金) 01:42:58>ちなみに、statusBarはフォームエディタでMainWindowを作ると、
>uiの方で生成されていますが、statusBarにQLabelなどを追加するのは、
>フォームエディタではできないですよね?
残念ながら知らない。
>MainWindow::createStatusBar()のような関数を自作して、
>MainWindowコンストラクタのui->setupUi(this);の後で呼ぶような
>コードが考えられると思うのですが、そんな感じになるでしょうか。
それでいいと思う。
ただ、選択肢として既に配置されているstatusBarを格上げして、
そのソースからQLabelを追加する方法が考えられる。
0304287
2009/10/23(金) 03:17:16なるほど、C++には<>を用いるキャストの構文があり、
キャストでは常識なのですね。
詳しい説明ありがとうございました。
大変勉強になりました。
0305デフォルトの名無しさん
2009/10/23(金) 08:27:050306デフォルトの名無しさん
2009/10/23(金) 10:28:50dynamic_cast<>()
const_cast<>()
reinterpret_cast<>()
0307デフォルトの名無しさん
2009/10/23(金) 13:19:12一番上のウィンドウバーに 40個のカスタムダンパが見つかりました。
ってしばらく表示されるんだけど
あれって何の意味?
0308デフォルトの名無しさん
2009/10/23(金) 14:03:53毎回イテレータをぐるぐる回してた…
0309デフォルトの名無しさん
2009/10/23(金) 14:17:48Qt Designer上ではできません。
0310301
2009/10/23(金) 15:24:33レス、ありがとうございます。
>Qt Designer上ではできません。
そうですか、あまり使われないからなんでしょうね。
0311デフォルトの名無しさん
2009/10/23(金) 15:28:27たまに使います。
0312デフォルトの名無しさん
2009/10/23(金) 18:23:33ローカル変数で内容が確認できません。
確認する方法はないでしょうか。
0313デフォルトの名無しさん
2009/10/23(金) 21:40:54確認できないというのは、具体的にどのようなことをして、どのようになったのでしょうか。
もし、最適化でローカル変数がなくなって、デバッガでローカル変数が見えないならば、
まったく最適化がかからないようなデバッグレベルでコンパイルしてみてはどうでしょう。
0314312
2009/10/24(土) 10:08:09std::pass = "test";
QString qpass = pass.c_str();
とすると、ローカル変数は
▽pass
▽_M_dataplus
▽_M_p 0xXXXXX "$XXXXXX
▽*_M_p 36 '$'
qpass "test"
みたいな
0315デフォルトの名無しさん
2009/10/24(土) 12:47:38>std::pass = "test";
これは
std::string pass = "test";
のタイポだよね。
こちらはLinux/X11 g++だけど、問題なくデバッグできるけど。
0316315
2009/10/24(土) 12:51:260317デフォルトの名無しさん
2009/10/24(土) 14:37:13std::stringをtypedefしていない?
0318デフォルトの名無しさん
2009/10/24(土) 14:50:10>>314とは別人ですが。
std名前空間の中に新しいtypedefを作るのは
未定義の動作では?
0319デフォルトの名無しさん
2009/10/24(土) 15:26:23画像が真ん中に表示されます。
この場合、GraphicsViewをマウスクリックした座標とpixmapの画像座標の対応関係は、
どのようになるのでしょうか?
QGraphicsView, Itemあたりのヘルプを読んでみたのですが、いまいち概要が把握できませんでした。
0320317
2009/10/24(土) 15:37:33>std名前空間の中に新しいtypedefを作るのは
>未定義の動作では?
これはどういう意味?
こちらが317でいいたかったのは、314の人が
typedef std::string StringT;
//...
StringT aString("test");
std::cout << aString << std::endl;
などとしているのではないのか、ということを聞きたかったんだけど。
これって未定義?
0321デフォルトの名無しさん
2009/10/24(土) 16:12:34QMessageBox(QMessageBox::NoIcon, "title", "text").exec();
0322314
2009/10/24(土) 16:44:39std::sritng pass でした。
Debian で QtCreatorを使ってます。
デバッグは問題なくできるんですが、ローカル変数の表示で
std::string pass は 内容がバケテ表示され
QString qpass はそのまま正しく表示されます。
std::string の文字化け?を何とかできないかと言うことです。
紛らわしくて、すいません。
0323デフォルトの名無しさん
2009/10/24(土) 18:07:04こちらもDebian GNU/LinuxでQt Creatorを使用してるけど、
文字化けはしていない。
debianのパッケージ版の安定版Qt Creator 1.2.1を
# aptitude -t sid install qtcreator
でインストールしたやつだけど。
一度そのバグが再現するシンプルなコードを作って、
コンソール上で、gdbを直接使っても文字化けしないか
確かめればいいんじゃないかな。
・本当に問題を起こしている部分が特定できる。(Qt Creatorで)
・Qt Creatorの問題なのかがわかる。
エラーの原因を絞るためにこのことは有効だと思うけど。
0324323
2009/10/24(土) 18:11:36違うスレにもっと詳しい人がいるかもしれない。
そちらで聞くのもいいと思う。
0325デフォルトの名無しさん
2009/10/24(土) 18:30:30debugging helper は enable?
0326デフォルトの名無しさん
2009/10/24(土) 19:30:58QGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent*)
やQGraphicsSceneMouseEvent::lastScenePos() を調べてみてはどうでしょうか。
0327322
2009/10/24(土) 19:57:56文字化け表示は別の原因だったみたいです。
ただ、
QString qpass = pass.c_str();
でqpassが正常表示だったためてっきり
改めて、この部分だけテストプログラム書いてみたら正常に表示されました。
0328デフォルトの名無しさん
2009/10/24(土) 23:59:41とりあえずQGraphicsView::mousePressEvent(QMouseEvent* event)で
if (QGraphicsItem *item = itemAt(event->pos()))
{
qDebug() << item->pos();
}
で追加したQGraphicsItemでゲットできることがわかりました。
ただ、item->pos()がおそらくView上でitemが追加された座標で(0, 0)となります。
知りたいのはitemオブジェクト内での座標なのですが、
これを知るには、QGraphicsItemから派生したクラスのmousePressEvent()をオーバーライドして、
座標を得るしかないのでしょうか。
0329デフォルトの名無しさん
2009/10/25(日) 01:49:42>これを知るには、QGraphicsItemから派生したクラスのmousePressEvent()をオーバーライドして、
>座標を得るしかないのでしょうか。
それでいいと思うけど。
あとは、アイテムにアイテム用のイベントフィルターをシンストールするか。
0330329
2009/10/25(日) 02:01:16>あとは、アイテムにアイテム用のイベントフィルターをシンストールするか。
あとは、アイテムにアイテム用のイベントフィルターをインストールするか。
アイテム用のイベントフィルターは、アイテムが他のアイテムのイベントをフィルターする
から、今の場合は役に立たないかも。
0331329
2009/10/25(日) 02:19:56基本的にビューは、ウィジットとしてアイテムやシーンにを描画する役目と、
シーンへイベントを伝える役目をになう。
だからビューのイベントハンドラーをオーバーライドしてするときは、
主に、見た目に関することや、イベントをシーンに伝える役目としての処理を
書けばいいと思う。
文字通りビューウィジットとしての役割。
シーンには、ロジカル座標を提供し、背景の設定を提供する。
アイテムのリストを持っていてこれを管理する。
またビューから伝達されたイベントをアイテムに伝える。
だから、シーンのイベントハンドラーをオーバーライドして、
アイテムの共通のイベントは、こちらで処理すればいいと思う。
シーンはQObjectだから、シーンQApplication::sendEvent()
で直接イベントを送ることもできる。
アイテムはそれぞれがそれぞれの振る舞いがあるから、
アイテム自身のイベントハンドラーをオーバーライドして、
そのアイテム独自の振る舞いはそこで書けばいいと思う。
0332329
2009/10/25(日) 02:23:58>基本的にビューは、ウィジットとしてアイテムやシーンにを描画する役目と、
基本的にビューは、ウィジットとしてアイテムやシーンを描画する役目と、
>シーンはQObjectだから、シーンQApplication::sendEvent()
シーンはQObjectだから、シーンにQApplication::sendEvent()
0333329
2009/10/25(日) 03:33:00本当にごめん。329を直してみた。
基本的にビューはウィジットとして、アイテムやシーンを描画する役目と、
シーンへ、イベントを伝える役目を担う。
だからビューのイベントハンドラーをオーバーライドしてすることは、
主に、拡大縮小などの見た目に関することを操作したり、イベントをシーンに伝える役目
としての処理を書けばいいと思う。文字通りビューウィジットとしての役割。
シーンは、ロジカル座標を提供し、背景の設定を提供する。
シーンはアイテムのリストを持っていてこれを管理する。
またビューから伝達されたイベントをアイテムに伝える。
だから、シーンのイベントハンドラーをオーバーライドして、
アイテムの共通の処理は、こちらで書けばいいと思う。
もちろん、その中でアイテムリストをイテレートして
アイテムのメソッドをコールしてもよい。
シーンはQObjectだから、シーンにQApplication::sendEvent()
で直接イベントを送ることもできる。
アイテムには、それぞれがそれぞれの振る舞いがあるから、
アイテム自身のイベントハンドラーをオーバーライドして、
そのアイテム独自の振る舞いはそこで書けばいいと思う。
0334デフォルトの名無しさん
2009/10/25(日) 08:28:58デモの動きはVCの方が明らかに早い。
0336デフォルトの名無しさん
2009/10/25(日) 09:03:39もしくはそれ以下としか思えない俺
バイナリサイズも同じソースかと疑いたくなるぐらい肥大するし
0337デフォルトの名無しさん
2009/10/25(日) 09:32:48VC++でビルドしたQtの方が、デモの動きが速いと見て分かります。
0338デフォルトの名無しさん
2009/10/25(日) 10:05:060339デフォルトの名無しさん
2009/10/25(日) 10:05:56>>74 はネタです。釣られないように。
0340デフォルトの名無しさん
2009/10/25(日) 10:09:550341デフォルトの名無しさん
2009/10/25(日) 11:01:170342デフォルトの名無しさん
2009/10/25(日) 12:56:04たぶんライセンスの関係じゃね?
0343デフォルトの名無しさん
2009/10/25(日) 15:38:35ではなくダイアログを抜けるので、それまで確定した内容が消えてしまいます。
入力中だった文字はそのままの状態で消えたダイアログの親に行きます。
IME入力中のESCキーがIMEのウィンドウ?に飛ばず下のQDialog or QLineEditに
飛んでいるように見えますがが、回避するにはどこを見たらいいでしょうか。
0344デフォルトの名無しさん
2009/10/25(日) 15:43:34WindowsとMac OS Xのどちらですか。
0345デフォルトの名無しさん
2009/10/25(日) 15:45:26ATOKのLinuxもあるので、3つの内のどれでしょうか。
0346デフォルトの名無しさん
2009/10/25(日) 15:46:280347デフォルトの名無しさん
2009/10/25(日) 16:02:110348デフォルトの名無しさん
2009/10/25(日) 16:08:300349デフォルトの名無しさん
2009/10/25(日) 16:10:27Qt やる人は wxWidgets のスレも見に行った方が良いよ
0350デフォルトの名無しさん
2009/10/25(日) 16:50:42Qtと比べたらwxとか使いにくくて仕方がないじゃん
知る価値ないと思う
0351デフォルトの名無しさん
2009/10/25(日) 16:53:03QWidget(QDialogを含む)にフォーカス属性があるから、
このフォーカス関係の属性をセットすれば
いいのかもしれないんだけどよく知らないから、思いつく方法を列記する。
(1) QLineEditのカスタムクラスを書いてキーイベントをハンドルして
ESCキーのときは、accept()して、親ウィジットであるダイアログに
イベントを伝えないようにする。
(2) または、QLineEditにイベントフィルターをインストールして、
同様の処理をする。
(3) デザインフォーム(Qt DesignerまたはQt Creatorに組み込まれたもの)を使用しているのなら
QLineEditを格上げして、そこで同様の処理をする。
(4) あるいは、ダイアログのキーイベントをハンドルして、lineEdit->hasFocus()して、
QLineEditにフォーカスが当たっているときは、ESCキーに対してデフォルトの
振る舞いをしないようにする。
0352351
2009/10/25(日) 16:54:06(4)の例
void
Dialog::keyPressEvent(QKeyEvent* keyEvent)
{
if(keyEvent->key() == Qt::Key_Escape) {
if(ui->lineEdit->hasFocus()) {
keyEvent->accept();
}
} else {
QDialog::keyPressEvent(keyEvent);
}
}
(注意)
ちなみに、キャンセルボタンが配置されているときは、そのボタンがESCキーに対応している可能性もある。
ただし、QLineEditにフォーカスが当たっているときにどうなのかは未確認。
0353デフォルトの名無しさん
2009/10/25(日) 16:55:26なんで?
wxと比べたらQtとか使いにくくて仕方がないじゃん
0354351
2009/10/25(日) 16:56:21>if(ui->lineEdit->hasFocus()) {
if(lineEdit->hasFocus()) {
0355デフォルトの名無しさん
2009/10/25(日) 16:58:18そう毛嫌いせずに視野は広く持った方が良いよ。
まぁ見に行けば分かるさ。
0356デフォルトの名無しさん
2009/10/25(日) 17:01:28>QLineEditにフォーカスが当たっているときは、ESCキーに対してデフォルトの
>振る舞いをしないようにする。
IME入力モードになってるときに限ることって出来ますか?
0357デフォルトの名無しさん
2009/10/25(日) 17:04:52・現状どうなっているのか
・それに対する自分の意見
・自分の環境は何なのか(OS,CPU,GPU)
・IMEを他のものにして同じ症状があるのかどうか、ないならそのIMEは何なのか。
・可能ならサンプルをアップローダーに。
このくらいは質問するなら情報として欲しいわ。
0358デフォルトの名無しさん
2009/10/25(日) 17:05:15賛成。
それぞれに長所、短所あるから一概にいえないと思う。
0359デフォルトの名無しさん
2009/10/25(日) 17:09:27で、なんでいきなりwxの話題が出たの?
Qt Creatorが熟れてないとかそういう話題から?
0360デフォルトの名無しさん
2009/10/25(日) 17:10:45wx スレを見に行けば分かる。
0361デフォルトの名無しさん
2009/10/25(日) 17:12:420362351
2009/10/25(日) 17:14:21インプットメソッドイベントをハンドルすればできそう。
inputMethodEvent()をオーバーライドすればよい。
ただ、私は使用したことはないので、具体的にどうすればいいかは
はわからない。
0363デフォルトの名無しさん
2009/10/25(日) 17:17:05久々に見てきたが
IDE議論とwxの新IDE、あとはQt他ライブラリとの比較ぐらいしかこれといったものはなかった
もう少し具体的に書いてくれ
0364デフォルトの名無しさん
2009/10/25(日) 17:23:55最新10レス位を見ただけでも何か気付くもんだと思うが…
別に謎なぞしてる訳じゃないから、本当に分からないならスルーしてくれ。
>>349を書いたのは親切心のつもりだったが、邪魔して悪かったな。
0365デフォルトの名無しさん
2009/10/25(日) 17:31:200366デフォルトの名無しさん
2009/10/25(日) 17:35:09>IMEを他のものにして同じ症状があるのかどうか、ないならそのIMEは何なのか。
特にこれだと思う。ATOKが悪さをしているか、ATOKに渡すべきキーイベントを
Qtが食っているか。ATOK絡みでは、問題があったりするのか。
どっちも古めだけれど。
http://www.kde.gr.jp/ml/Qt-devel/msg00686.html
ATOK/一太郎 統合スレッド[ その2 ]
http://pc11.2ch.net/test/read.cgi/linux/1193271272/
0367デフォルトの名無しさん
2009/10/25(日) 17:41:53こちらは、Debian GNU/Linux 上で Qt immodule/anthyで日本語入力しているけれど、
同じように、日本語入力中にESCを押すとダイアログが閉じるよ。
0368デフォルトの名無しさん
2009/10/25(日) 18:01:00kinput2は、日本語入力中にESCを押してもダイアログが閉じませんでした。
0369デフォルトの名無しさん
2009/10/25(日) 18:15:11件のテキストボックスにフォーカスがある間はescを押してもQDialogのreject()が呼ばれないようにする
ってのはどうか
class なんか : public QDialog, ...
{
void reject() {
if (! lineEdit->hasFocus()) QDialog::reject();
}
};
参考:
Qt-interest Archive - QDialog and ESC
http://lists.trolltech.com/qt-interest/2005-04/thread00872-0.html
0370デフォルトの名無しさん
2009/10/25(日) 18:19:57あ、御免スルーして...
0371367
2009/10/25(日) 18:34:14>>343 の意味を取り違えていたかもしれない。
>既出かもしれませんが、QLineEditで日本語入力(ATOK)中にESCを押すとIME
>ではなくダイアログを抜けるので、それまで確定した内容が消えてしまいます。
この「日本語入力中」というのは、変換確定前の日本語入力中ということなの。
それとも、日本語入力モードになっているときということなの。
>>367 で出る症状は後者のことをいっているので、
質問者が前者の意味のことをいっているのなら、
私の環境でもダイアログが閉じないということになる。
話をややこしくしてごめん。
0372デフォルトの名無しさん
2009/10/25(日) 18:58:27です
0373デフォルトの名無しさん
2009/10/25(日) 18:59:10文字列が確定しているときに、日本語入力モードかどうかに拘らず、ESCでダイアログ
が閉じてしまうということならば、普通の動作ではないでしょうか。
0374371
2009/10/25(日) 19:14:22>です
やっぱり勘違いだったみたいね。ごめん。
>>373
>文字列が確定しているときに、日本語入力モードかどうかに拘らず、ESCでダイアログ
>が閉じてしまうということならば、普通の動作ではないでしょうか。
その通りです。勘違いしていました。
0375デフォルトの名無しさん
2009/10/25(日) 19:44:40変換中の文字を確定するときのenterで
入力枠に文字が入ると同時に(残りの枠が未入力でも)
ダイアログが確定してOKボタンを押したことになってしまいます
0376362, 367
2009/10/25(日) 19:48:08QLineEditのカスタムクラスを書いて、inputMethodEvent()をオーバーライドし、
受け取ったイベントのevent->preeditString()が空かどうかで、
入力中かどうかが判断できるみたい。
また、こちら(Linux, qt immodule, anthy)では、日本語入力中(変換確定前)は、
途中でESCキーを押してもkeyPressEventは発生せず、inputMethodEventだけが発生した。
だからそちらも同じ動作ならinputMethodEvent()だけをオーバーライドすればいいと思う。
ただ、こちらの環境と違うし、ATOKの問題かもれないから、そちらの環境では、
日本語入力中にESCを押したときに、keyPressEventが発生しているかもしれない。
そのときは、keyPressEvent()もオーバーライドする必要があるかもしれない。
場合に依ってはフラグを立てて入力中かどうかを判断すればよい。
0377デフォルトの名無しさん
2009/10/25(日) 20:07:45>OKボタンがデフォルトボタンになっていると
>変換中の文字を確定するときのenterで
>入力枠に文字が入ると同時に(残りの枠が未入力でも)
>ダイアログが確定してOKボタンを押したことになってしまいます
>>343 の人だよね。
こちら(Linux/X11)では、単に日本語入力の確定になる。
そしてもう一度Enterを押すとデフォルトボタンにより、ダイアログが閉じる。
0378デフォルトの名無しさん
2009/10/25(日) 20:28:020379デフォルトの名無しさん
2009/10/25(日) 21:27:25MS-IMEはマイクロソフトの製品だけど。
> IME - Wikipedia
> ttp://ja.wikipedia.org/wiki/IME
> IMEはWindowsにおける用語であり、
> 広く文字入力のためのシステムを表す一般名称はインプットメソッドである。
> ただし、最近ではWindows以外のプラットフォームで使われるインプットメソッド
> (Mac OSの「ことえり」など)についてもIMEと呼ばれることがある。
> AndroidプラットフォームではWindows同様、IMEという用語を使用している。
うむ、微妙。
0380デフォルトの名無しさん
2009/10/25(日) 21:33:160381デフォルトの名無しさん
2009/10/26(月) 10:42:48あれ、メソッドとか検索できて便利なんだけど
ついでに、変数も検索できないですか?
0382デフォルトの名無しさん
2009/10/26(月) 12:52:48Windowsで,QMainWindowのウィンドウハンドル(HWND)を取得する方法ってないんでしょうか?
今まで他の開発環境で書きためたソースやライブラリでHWNDを引数やリターン値に持つ
WIN32 APIをかなり使っているので,楽に移植したいのです。
Qtの設計思想からOS依存するようなものは排除されているのもわかりますし,WIN32 APIの
代替となるような機能が用意されているようではあるんですが...
現在アクティブなウィンドウのハンドルならWIN32 APIの ::GetActiveWindow() で取得できましたが,
その他のウィンドウについては,::FindWindowEx()とか使って取得するしかないんでしょうか。
0383デフォルトの名無しさん
2009/10/26(月) 12:58:040385デフォルトの名無しさん
2009/10/26(月) 13:09:04Qt-interest Archive - Qt 4.2.0: How to get HWND handle?
http://lists.trolltech.com/qt-interest/2006-10/thread00800-0.html
WIdはWindowsではhwndだから、WId QWidget::winId() constを使うんだってさ
0387デフォルトの名無しさん
2009/10/26(月) 16:08:56できないんじゃないかな。
多分知っていると思うけど、現在開いているドキュメント以外を検索したいのなら。
「編集」メニューの「検索・置換」->「Find Dialog」や
「編集」メニューの「検索・置換」->「ディスク上のファイル」
などを選んで、複数のファイルの中の検索ができるからそれを使うしかないんじゃないかな。
検索結果は、Qt Creatorの中でリストアップされるので便利。
でもこれだと、変数限定というわけにはいかないけど。
ディスク内を検索するときは、ディレクトリを指定した方がいいよ。
0388デフォルトの名無しさん
2009/10/26(月) 23:19:11遅レスですが、レスありがとうございます。
>だから、シーンのイベントハンドラーをオーバーライドして、
>アイテムの共通の処理は、こちらで書けばいいと思う。
これを実践しようと思い、QGraphicsSceneから派生したPixmapSceneクラスを
つくり、mousePressEvent()を実装して、そこでマウスクリックされた論理座標を
得ようとしました。
class PixmapScene : public QGraphicsScene
{
public:
PixmapScene();
protected:
void mouseMoveEvent(QMouseEvent* event);
void mousePressEvent(QMouseEvent* event);
};
この書き方だと、マウスイベントが発生されないのですが、
どこが間違っているでしょうか?
0389デフォルトの名無しさん
2009/10/26(月) 23:26:230390デフォルトの名無しさん
2009/10/26(月) 23:33:00Q_OBJECTマクロ書かないといけない。
class PixmapScene : public QGraphicsScene
{
Q_OBJECT
public:
PixmapScene();
//...
0391390
2009/10/26(月) 23:45:23もう一つ
QGraphicsSceneのイベントハンドラーのほとんどは、
QGraphicsSceneEventから派生したイベントタイプのイベントを
ハンドルする。
lass PixmapScene : public QGraphicsScene
{
Q_OBJECT
//...
protected:
void mouseMoveEvent(QGraphicsSceneMouseEvent* mouseEvent)
void mousePressEvent(QGraphicsSceneMouseEvent* mouseEvent)
//...
QGraphicsSceneやQGraphicsItemは、qrealやQRectFなどの浮動小数点数型
の値で座標値を保持、計算する。
だから、自分でカスタムクラスを書く時は、これらの浮動小数点数型を使う。
ちなみに、一部の組込みのものを除いて、ほとんどのプラットフォームでは、
qrealはdoubleがtypedefされたも。
ただし、ユーザーとして使う時は、論理座標ということでint型などの値を
メンバー関数に渡してもよい。
0392390
2009/10/26(月) 23:54:53void mouseMoveEvent(QGraphicsSceneMouseEvent* mouseEvent);
void mousePressEvent(QGraphicsSceneMouseEvent* mouseEvent);
分かっているとは思うけど、PixmapSceneからさらに派生させ、
その派生クラスでイベントをハンドルする場合には
PixmapSceneのイベントハンドラーにも
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent* mouseEvent);
とvirtualをつけないといけない。
0393390
2009/10/26(月) 23:58:18誤)lass PixmapScene : public QGraphicsScene
正)class PixmapScene : public QGraphicsScene
0394デフォルトの名無しさん
2009/10/27(火) 00:06:04virtualの件は承知しております。ご指摘ありがとうございます。
sceneのマウスイベントがうまく補足できません。
class PixmapScene : public QGraphicsScene
{
Q_OBJECT
public:
PixmapScene();
protected:
void mouseMoveEvent(QGraphicsSceneMouseEvent* mouseEvent);
void mousePressEvent(QGraphicsSceneMouseEvent* mouseEvent);
};
void PixmapScene::mousePressEvent(QGraphicsSceneMouseEvent* mouseEvent)
{
int x = mouseEvent->lastPos().x();
int y = mouseEvent->lastPos().y();
qDebug() << QString("into PixamapScene::mousePressEvent() (x, y) = (%1, %2)").arg(x).arg(y);
}
とかやってみましたが、コンソールに何も表示されません。
MainWindowでPixmapScene m_scene;として、
m_scene.addPixmap(QPixmap::fromImage(m_imge));
ui->graphicsView->setScene(&m_scene);
を行って、sceneをgraphicsviewにセットはしております。
何か根本的に理解が間違っているのか。。。
0395デフォルトの名無しさん
2009/10/27(火) 00:10:24> Q_OBJECTマクロ書かないといけない。
イベントハンドラをオーバーライドするためだけならば、なくてもよいです。
>>392
> virtualをつけないといけない。
付けなくて付けたことになるので、付けなくてもよいです。
0396390
2009/10/27(火) 00:32:13誤解していた。
ありがとう。
0397390
2009/10/27(火) 00:47:07ちょっと原因が分からない。
こちらで確認した限りでは、394のコードで問題なくマウスプレスイベントがハンドルできた。
ただ、ハンドラーの中でQGraphicsScene::mousePressEvent()をコールした方がいいと思う。
そうしないとアイテムが配置されている時に、そのアイテムにイベントが伝わらなくなる。
void
PixmapScene::mousePressEvent(QGraphicsSceneMouseEvent* mouseEvent)
{
qreal x = mouseEvent->lastScenePos().rx();
qreal y = mouseEvent->lastScenePos().ry();
qDebug() << QString("PixamapScene::mousePressEvent() (x, y) = (%1, %2)").arg(x).arg(y);
QGraphicsScene::mousePressEvent(mouseEvent);
}
0398390
2009/10/27(火) 01:12:38一つ思いついた。
GraphicsViewのmousePressEvent()をオーバーライドしているのに、
その中で基底クラスのQGraphicsView::mousePressEvent()を
コールしていないのが原因では?
グラフィックスシーンフレームワークでは、イベントは
QGraphicsView -> QGraphicsScene -> QGraphicsItem
の順番に伝えられるから。
0399デフォルトの名無しさん
2009/10/27(火) 06:50:56HTTPプロトコルを使って、Webサイトにアクセスするために、今まではQHttpとその周辺のクラスを使っていました。
しかし、QHttpのヘルプを見ると、Qt 4.4で導入された、QNetworkAccessManagerを使ったほうがよいと書いてありました。
確かにこちらだと、アクセスした後に返ってくる返答をQIODeviceを継承しているQNetworkReplyで受け取れるみたいで、使いやすそうでした。
そこで、こちらに移行しようと思い、書き直しているのですが、QHttpで実装していたときに、
headerを記述するために用いたQHttpRequestHeaderクラスの
QHttpRequestHeader::QHttpRequestHeader ( const QString & method, const QString & path, int majorVer = 1, int minorVer = 1 )
このメソッドの、request-URIを指定するpathや、protocol-versionを指定するmajorVerなどを
記述するものがQNetworkReplyクラスやその周辺クラスのQNetworkRequestクラスに見当たりません。
また、QHttp::setHost(...)のようなホストを指定するメソッドも見当たりません。
どうかご存知の方がおられましたら、ご教授お願いします。
0400デフォルトの名無しさん
2009/10/27(火) 07:09:430401デフォルトの名無しさん
2009/10/27(火) 07:13:020402399
2009/10/27(火) 07:44:54できました!
自動でホストとパスを分けてくれるんですね。
他のところのバグもあってうまく行かず気づきませんでした。
どうもありがとうございました。
0403デフォルトの名無しさん
2009/10/27(火) 21:43:30void PixmapScene::mousePressEvent(QGraphicsSceneMouseEvent* mouseEvent)
に入ってくることができました。
がしかし、
mouseEvent->lastPos(), pos()など実行しても、(0, 0)しか返って来ません。
mouseEvent->scenePos()が目的としていた座標値のようです。
また、scenePos()がマイナスのところをクリックしても、上記イベントハンドラに来るみたいです。
てっきりそのscene内だけかと思ったら。。。
もう少しヘルプを読んでみます。ありがとうございました。
0404デフォルトの名無しさん
2009/10/27(火) 22:16:350405403
2009/10/27(火) 23:32:40MainWindow(QMainWindowから派生)
+ImageView(QGraphicsViewから派生)
+PixmapScene(QGraphicsSceneから派生)
MainWindowでui->graphicsView->setScene()でPixmapSceneオブジェクトを設定
という前提で、
void PixmapScene::mousePressEvent(QGraphicsSceneMouseEvent* mouseEvent)
上記イベントハンドラから、MainWindowのメンバ関数を呼びたいのですが、
どのようにしたらよいのでしょう?
PixmapSceneからImageViewのポインタをゲットできれば、
ImageViewからMainWindowのポインタを得て、MainWindowのメンバ関数を呼べるのでは
と考えております。
やりたいことに対して煩雑な気がするのですが、こんなものですかね。
0406デフォルトの名無しさん
2009/10/27(火) 23:38:07>また、scenePos()がマイナスのところをクリックしても、上記イベントハンドラに来るみたいです。
>てっきりそのscene内だけかと思ったら。。。
シーンは論理座標を表現するクラスなので座標値としてマイナスもとる。
0407デフォルトの名無しさん
2009/10/28(水) 00:38:13>あと一息なのでお知恵を拝借いただけるとありがたいです。
がんばれ。
>MainWindow(QMainWindowから派生)
>+ImageView(QGraphicsViewから派生)
>+PixmapScene(QGraphicsSceneから派生)
ちょっとクラスの構成や参照関係が見えないんだけど。
これらのクラスは、全てコードで書いたの?それともフォームエディタを使った?
フォームエディタを使ったのならMainWinodwの下に
セントラルウィジットしてQWidgetがあるはずなんだけど。
>>285 で指摘したようなことが必要になる。
それとも、ImageViewは、setCentralWidget()で指定した
セントラルウィジットなの?
PixmapSceneは、親オブジェクトを参照している、それともしてない?
その辺が分からないから一般論で回答する。
0408407
2009/10/28(水) 00:39:41QWidgetには、親ウィジットをポインターとして参照させることができるから
もしコンストラクターなどで親ウィジットを参照させてないなら参照させるようにしてから
そのparentWidget()で親ウィジットを参照してqobject_cast<>()でキャストして
という処理を繰り返し、メインウインドウまで遡っていくか。
または
>>286 で指摘した方法などの代替案をとるとか。
などが考えられる。
また、シーンのカスタムクラスを書いているのならばMainWindowをポインターメンバーとして参照し、
コンストラクト時に渡すようにすればいいんじゃないかな。
QGraphicsSceneはQWidgetではなくQObjectを継承している、parent()で親オブジェクトを得て、
qobject_cast<>()でキャストする必要がある。
0409デフォルトの名無しさん
2009/10/28(水) 08:30:44のにたどり着いた。
http://qtusersforum.s2.zmx.jp/forum/viewtopic.php?f=9&t=97
ここもいいんだけど,ソースコード書くとインデントが無視されてしまうので,ソースコート
を書く必要がある場合は上の方が向いてるかも。
管理人がどんなプロフィールで,どんな背景で作られたかはわからんが。
0410デフォルトの名無しさん
2009/10/28(水) 11:34:490411デフォルトの名無しさん
2009/10/28(水) 11:52:00pthread(POSIX Thread)のパターンが、そのまま使えない?
0412403
2009/10/28(水) 22:30:47MainWindowとImageViewはフォームエディタで作成
MainWindow上にQGraphicsViewを格上げ
QGraphicsSceneを派生したPixmapSceneを自作
PixmapSceneはMainWindowにメンバ変数としてインスタンス生成
PixmapSceneを派生する際、QGraphicsSceneがご指摘のとおり、
QObjectを引数とするコンストラクタしかなかったため、PixmapSceneの
イベントハンドラからMainWindowのメンバ関数へどうやってアクセスしたら
良いのだろうと悩みました。
繰り返しになりますが、PixmapSceneのインスタンス生成は、MainWindowの
メンバ変数としておりますが、この際、
PixmapScene::PixmaScene(QObject* parent) : QGraphicsScene(parent){}
とコンストラクタを定義して、
MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWindow),m_pixmapscene(this) { ... }
PixmapSceneにMainWindowのポインタを渡しておき、PixmapScene::mousePressEventQGraphicsSceneMouseEvent* mouseEvent)
{
MainWindow* mainwindow = qobject_cast<MainWindow*>(parent());
qDebug() << mainwindow;
if (mainwindow != 0)
{
mainwindow->setPointToStatusBar(mouseEvent->scenePos().x(), mouseEvent->scenePos().y());
}
}
MainWindowのメンバ関数にアクセスすることができました。
どうもありがとうございました。
(長々と説明が下手ですいません。)
>>286のように、グローバルなアプリのポインタ使った方がスマートかなと思ったり。。。
0413デフォルトの名無しさん
2009/10/28(水) 22:45:29サブスレッドからシグナルを送るとメインスレッドのスロットで捕捉されるので
スレッド間通信がすっげー簡単になるよ
0414デフォルトの名無しさん
2009/10/28(水) 23:08:30>グローバルなアプリのポインタ使った方がスマートかなと思ったり。。。
MainWindowまでたどるのが大変なとき(遠いとき)は、有効。
0415デフォルトの名無しさん
2009/10/29(木) 01:24:46まあ、そんなところの実装例が見たいんだよな。
4.6にはQFutureとかあるし、使い方も知りたい。
0416デフォルトの名無しさん
2009/10/29(木) 08:18:19QFutureは、4.4からあります。
0417403
2009/10/29(木) 23:45:58>>286のようなコードに修正したいと思ったのですが、qAppはどこで生成されているものなのでしょう?
今現在main()は
int main(int argc, char *argv[])
{
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
このような感じです。(今見るとa, wとか適当な変数名。。)
QApplicationクラスを派生させて、getMainWindow()を追加するのはわかるのですが。
0418デフォルトの名無しさん
2009/10/30(金) 06:10:04>408
>>286のようなコードに修正したいと思ったのですが、qAppはどこで生成されているものなのでしょう?
qAppは、/QTDIR/src/gui/kernel/qapplication.h内で定義されているマクロで、
次のようになっている。
#if defined(qApp)
#undef qApp
#endif
#define qApp (static_cast<QApplication *>(QCoreApplication::instance()))
マクロなのでコンパイルする前処理としてプリプロセッサがソースコードに
qApp
があると、その部分全てを
static_cast<QApplication *>(QCoreApplication::instance())
に(ソースコードとして)置き換えてくれる。
つまり、ソースコードにqAppと書いたら、そこにstatic_cast<QApplication *>(QCoreApplication::instance())
と書いたことと同じことになる。
それで、このQCoreApplication::instance()は、何かと言うと、QApplicationの基底クラスのQCoreApplicationで
定義されているstaticな関数で、アプリケーションのインスタンス(実例:メモリー上に実際に確保された変数)を指すポインターを返す。
つまり、アプリケーションを指すポインターを返す。
0419418
2009/10/30(金) 06:11:41QApplicationのqApp [Macro]
http://doc.trolltech.com/4.5/qapplication.html#qApp
QCoreApplicationのinstanc() [static]
http://doc.trolltech.com/4.5/qcoreapplication.html#instance
>このような感じです。(今見るとa, wとか適当な変数名。。)
個人的な意見だけど、自分だけでプログラムするのなら、どんな名前でもいいんじゃないかな。
また、簡単な動作チェックなんかのときなどは、いちいち名前なんて考えてられないし。
でも、プロジェクトとかに参加して、ネーミング規約があるのならばそれに従わなければならないし、
他の人が見るものは、ある程度わかりやすくした方がよいと思う。
そして、その”他の人”というのは、数年後の自分である可能性がある。
そうすれば何年も前に書いた、規模の大きい、もう内容を忘れてしまったコードを見たときに、どんな処理をしているか把握するための
手助けになる。
だから普段から、ある程度はわかりやすい名前を付ける癖を付けておいた方がいいと思う。
個人的な意見だから気に障ったらごめん。
0420デフォルトの名無しさん
2009/10/30(金) 20:43:18悩む人がいるかもしれないから参考までに……
0421デフォルトの名無しさん
2009/10/30(金) 21:33:21詳しく説明していただきありがとうございました。
変数名についてですが、たぶんMainWindowのexampleのmain.cppを
そのまま持ってきた気がします。
自分で書くなら、ループ変数、局所的なテンポラリ変数以外に一文字
というのはあまり使いません。
ちなみに、Qtは初めて間もないです。MFCとかC++/CLIとか趣味でやっていましたが、
どちらも中途半端な気がしており、マルチプラットフォームで純粋なC++であるQtに
興味を持った次第です。
0422デフォルトの名無しさん
2009/10/30(金) 22:21:39>変数名についてですが、たぶんMainWindowのexampleのmain.cppを
>そのまま持ってきた気がします。
>自分で書くなら、ループ変数、局所的なテンポラリ変数以外に一文字
>というのはあまり使いません。
言い過ぎた気がするので、謝ります。ごめんなさい。
>ちなみに、Qtは初めて間もないです。MFCとかC++/CLIとか趣味でやっていましたが、
>どちらも中途半端な気がしており、マルチプラットフォームで純粋なC++であるQtに
>興味を持った次第です。
どっぷりとQtの世界につかってください。
これもおせっかいかも(^_^;)。
0423403
2009/10/31(土) 00:11:27>言い過ぎた気がするので、謝ります。ごめんなさい。
全く気にしておりませんよw
ちなみに、>286のようにQApplicationの派生クラス(Application)にgetMainWindow()という
MainWindowのポインタを取得できる関数を追加する場合、
MainWindowのポインタ自体をセットするのはどのようにするものでしょうか?
自分が考えるところでは、派生クラスApplicationにsetMainWindow(MainWindow* mainwindow);を
追加して、main()で
{
Application app(argc, argv);
MainWindow mainwindow;
mainwindow.setMainWindow(&mainwindow);
mainwindow.show();
return app.exec();
}
とやるくらいしか思いつかないのです。
0424デフォルトの名無しさん
2009/10/31(土) 00:33:56それでいいと思うけど。
>mainwindow.setMainWindow(&mainwindow);
app.setMainWindow(&mainwindow);
だね。
0425デフォルトの名無しさん
2009/10/31(土) 08:35:26ありがとうございます。
>app.setMainWindow(&mainwindow);
easy missでした。
ちなみにQApplicationの派生クラスを作る際に気をつけることって
ありますか?
リンカから
undefined reference to vtable for Application
と怒られました。(ApplicationはQApplicationの派生)
コンストラクタは
Application::Application(int argc, char* argv[]) : QApplication(argc, argv) {}
としております。
0426デフォルトの名無しさん
2009/10/31(土) 08:43:13自己解決しました。
http://randt.jp/?p=729
qmakeを再実行してリビルドしたら大丈夫でした。
すべてリビルドはやっていたのですが、qmakeの再実行はすべてリビルドに
入ってないのか。
0427デフォルトの名無しさん
2009/10/31(土) 09:21:010428デフォルトの名無しさん
2009/10/31(土) 15:13:45> コンストラクタは
> Application::Application(int argc, char* argv[]) : QApplication(argc, argv) {}
> としております。
Application::Application(int &argc, char* argv[]) : QApplication(argc, argv) {}
&argc としないと落ちることがあります。
0429デフォルトの名無しさん
2009/10/31(土) 23:10:50QApplicationのリファレンスを見ると、コンストラクタはargcが参照型なのですね。
ご指摘ありがとうございました。
0430デフォルトの名無しさん
2009/11/03(火) 19:37:100431デフォルトの名無しさん
2009/11/03(火) 20:45:42意味が分からないんだけど。
具体的に言うとどういうこと?
0432デフォルトの名無しさん
2009/11/03(火) 20:55:18質問しているのは、ファイルのフィルタじゃないよね?
0433430
2009/11/03(火) 21:05:32X ダイアログ
○ ディレクトリ
でした
0434デフォルトの名無しさん
2009/11/03(火) 21:38:34ディレクトリのフィルタはできるよ。
static関数のgetExistingDirectory()を使用するか、オプションとしてQFileDialog::ShowDirsOnlyを
指定すればよい。
参考:
http://doc.trolltech.com/4.5/qfiledialog.html
0435デフォルトの名無しさん
2009/11/03(火) 22:03:56以下のソースで、引数つきで実行された場合(argc>1)の引数の処理をMainWindow内で
したいと考えています。
int main(int argc, char *argv[])
{
Application app(argc, argv);
MainWindow mainwindow;
mainwindow.show();
return app.exec();
}
0436デフォルトの名無しさん
2009/11/03(火) 22:25:04show()を後からコールすればいいだけなんじゃない?
0437デフォルトの名無しさん
2009/11/03(火) 22:42:10たしかにそれでも可能です。
(MainWindowのコンストラクタで処理しても良いとも思います)
あと、main()にあまりたくさん記述したくないなぁというつまらない理由でもあります。
MFCや.NETでフォームとかダイアログが生成されたときに、
一度だけ呼ばれる関数があったので、Qtでもそのようなものが
あるのかなと思い、お伺いしました。
0438デフォルトの名無しさん
2009/11/03(火) 22:46:01MainWindow::show() の中で
hogehoge;
this->show();
とすればよかろう
0439デフォルトの名無しさん
2009/11/03(火) 22:57:55その処理をするメンバー関数を定義して、そのメンバー関数をコンストラクターからコールすればいいのではないかな。
そして、そのメンバー関数からshow()をコールすればいい。
あるいは、メインにQObjectを継承したカスタムクラスPreprocessのオブジェクトを作ってそれに引数に対する処理をさせてはどう?
そして、そのオブジェクトのシグナルとMainWindowオブジェクトのshow()スロットでつなげるとか?
0440デフォルトの名無しさん
2009/11/03(火) 23:18:13処理の内容にもよるのかもしれないけれど、アプリケーションのカスタムクラスで
コマンド引数に対する処理をしたほうが自然な気がするけど。
0442デフォルトの名無しさん
2009/11/04(水) 08:14:050443デフォルトの名無しさん
2009/11/05(木) 10:19:590444デフォルトの名無しさん
2009/11/05(木) 22:52:160445デフォルトの名無しさん
2009/11/07(土) 14:55:224みたいだけど、あまり日本語化されていない。
http://qt.linux-life.net/4/doc/ja/index.html
結構日本語化されているけど、2.3.2。
http://www.kde.gr.jp/~ichi/qt-2.3.2/index.html
これぐらいでしょうかねぇ。
0446デフォルトの名無しさん
2009/11/07(土) 15:12:290447デフォルトの名無しさん
2009/11/07(土) 15:36:120448デフォルトの名無しさん
2009/11/07(土) 22:57:41Perl5では(.+?)で出来るそうなのですが、Qtでは出来ないようでした。
Key=Value
で、Valueに=が含まれる場合に、Key側を最短にしたいです。
正規表現使わない方法もありますが、正規表現使ってシンプルに実装したいです。
0449デフォルトの名無しさん
2009/11/07(土) 23:22:49http://pc12.2ch.net/test/read.cgi/unix/1039165754/
http://pc12.2ch.net/test/read.cgi/tech/1241537764/
http://pc12.2ch.net/test/read.cgi/tech/1189246036/
0450デフォルトの名無しさん
2009/11/07(土) 23:37:33ただ(.+)も最短マッチになったはず
0451デフォルトの名無しさん
2009/11/08(日) 00:05:34すみません、QRegExp::setMinimal(true); も試してだめだったの忘れてました。
Key=Value を
QRegExp rxKey("^(.+)=(.*)$");
rxKey.setMinimal(true)
とやっても、Key側にイコールが入ってしまいます。
0452デフォルトの名無しさん
2009/11/08(日) 00:39:09rxKey.setMinimal(true);
rxKey.indexIn("Key=Value\n");
qDebug() << rxKey.cap(1);
普通にこれで切り出せるけど
0453デフォルトの名無しさん
2009/11/08(日) 00:46:16じゃだめ?
setMinimal は全体を最短にするだけで、各要素を最短でとるわけではないっぽいな。
0454デフォルトの名無しさん
2009/11/08(日) 09:54:35のページにある様にgitで
git clone git://gitorious.org/qt/qt.git
Qtを落としてきたら、なぜかインストール先が
/usr/local/Trolltech/Qt-4.7.0
になってた
……4.6.0betaのハズなんだけど
0455デフォルトの名無しさん
2009/11/08(日) 12:08:34入力のQImageと出力のQPixmapは別々の領域に確保されるんでしょうか?
Implicitly Shared Classesの話がそうなのだと思うのですが、いまいち理解できなくて。
QImage img1, img2;
img1.load(filename);
img2 = img1;
みたいに使っても問題ないということなのでしょうか。
いちいちポインタを使うものではないですか?
0456デフォルトの名無しさん
2009/11/08(日) 14:22:050457デフォルトの名無しさん
2009/11/08(日) 14:27:40>>456の「子ウィジェットの自動メモリ解放に関連して〜」 辺りを。
>Implicitly Shared Classesの話がそうなのだと思うのですが、いまいち理解できなくて。
その通りでISCが関連します。
>みたいに使っても問題ないということなのでしょうか。
問題ないです。
>いちいちポインタを使うものではないですか?
ポインタを使わないようにするものです。
0458デフォルトの名無しさん
2009/11/08(日) 15:02:31レスありがとう。
仮に、
QImage img1, img2;
img1.load(hoge1);
img2.load(hoge2);
img2 = img1;
とした場合、img2は、hoge2の画像データを自動で内部deleteして、
img2もimg1もhoge1の画像を指すようになるんですよね?
そして、img1かimg2どちらかに何らかの操作が行われた場合、初めてimg1のデータがimg2と
別々の領域になるように(内部の画像データコンテナだけだと思うが)、裏でコピー処理が行われる
という理解で良いのでしょうか。
0459デフォルトの名無しさん
2009/11/08(日) 15:35:14その通りです。
0460デフォルトの名無しさん
2009/11/08(日) 19:13:58master系のブランチは既に4.7向けになってる。
4.6系のソースが欲しいなら 4.6 / 4.6-stable 等の
4.6系のブランチを checkout する必要がある。
0461デフォルトの名無しさん
2009/11/09(月) 00:54:58どのように変えればいいのでしょうか?
0462デフォルトの名無しさん
2009/11/09(月) 01:05:290463デフォルトの名無しさん
2009/11/09(月) 03:12:57たとえばこんな感じ
QPalette labelPalette = label->palette();
labelPalette.setColor(QPalette::WindowText, Qt::red);
label->setPalette(labelPalette);
0464デフォルトの名無しさん
2009/11/09(月) 03:57:13Qt以外のライブラリでQtの”シグナルとスロット”と同様の機能があり、
そのライブラリでslotsていうキーワードが使用されているようなときに使用する。
このマクロはboostライブラリとQtを一緒に使用できるようにするために、
Qt4.1で導入された。
いつもは
public slots:
などと書いているQtのスロット部分に
public Q_SLOTS:
と書けばよい。
ほかにも、Q_SIGNALS、Q_SIGNAL、Q_SLOT、Q_EMITがある。
http://qt.nokia.com/doc/4.5/qobject.html
0465デフォルトの名無しさん
2009/11/09(月) 10:24:40ありがとう出来た。
labelからQPalette取り出せば良かったのか。
ただ、デバッグビルドだと色変えた時にランタイムエラー出るのに、
リリースビルドだとすんなり動いた何故なんだ・・・。
0466デフォルトの名無しさん
2009/11/09(月) 13:40:34オマエ、イイヤツ
0467デフォルトの名無しさん
2009/11/09(月) 17:46:02いろいろ調べると、Phonon自体はWindowsでVLCバックエンドとかMPlayerバックエンドを使えるみたいなんだけど、
qtからじゃ変える方法があるのかないのかよくわかんない。
たまにDirectXのコーデックじゃうまくいかないことがあるから、
プレイヤーからVLC使って再生とかMPlayer使って再生とかしたかったんだけど。
qtは単にPhononを利用しているだけ。だけどqtが利用しているPhononに
Windowsだと、DirectX以外のバックエンドサポートプラグインを加えてないってことなのかなぁ?
理屈上は、VLC or MPlayerサイトで配布されているphonon-backendを加えて
qtのSDKを再コンパイルすると使えるようになるという話なのだろうか?
0468デフォルトの名無しさん
2009/11/09(月) 17:54:05QTのライブラリの中にplugins\phonon_backendってディレクトリがあって
そこに、phonon_ds94.dllとかあった。
もしVLCバックエンドを使うとしたらphonon_vlc.dll?とかいうファイルを入れるわけだな。
これを作れるのかどうか、どうやって作るのか、作った後の切り替え方はしらないけど。
ちなみに、他に興味がある人のために説明しておくと、phonon_backendは
MSVC使って自分でコンパイルしたやつにしかない。つまり普通に配布されているmingw版には存在しない。
mingw版ではDirectShowあたりがコンパイルできないからPhononサポートしてないんだと。
0469デフォルトの名無しさん
2009/11/09(月) 20:25:18Video関連はまだスケルトン状態だけどな・・・
0470デフォルトの名無しさん
2009/11/09(月) 20:48:450471デフォルトの名無しさん
2009/11/09(月) 21:54:14ttp://qt.nokia.com/doc/4.6-snapshot/qt4-6-intro.html
0472デフォルトの名無しさん
2009/11/09(月) 22:15:590473デフォルトの名無しさん
2009/11/10(火) 11:38:550474デフォルトの名無しさん
2009/11/10(火) 16:31:14環境は以下の通りです。
OS Windows7 64bit版
Qt qt-sdk-win-opensource-2009.04.exe
Qtインストール先 C:\Qt
0475デフォルトの名無しさん
2009/11/10(火) 21:13:57ttp://qt-creator-jp.sourceforge.jp/
このサイトに書いてある
『qtcreator_ja.qm ファイルを複製して
qt_ja_JP.qm にリネームする事で日本語化させる事も可能です。』
自分は上の通りにやったら日本語化された
0476デフォルトの名無しさん
2009/11/10(火) 22:15:43レス感謝です。バッチリ日本語化されました。
ありがとうございました!!!
0477デファルトの名無しさん
2009/11/11(水) 22:49:34先日Ubuntu9.10にバージョンアップしたら、ボタンのテキストに日本語が使えなくなりました。
どおして?
0478デフォルトの名無しさん
2009/11/11(水) 23:46:07mouseMoveEvent()でツールチップを表示しているのですが、マウスを止めていても、
ツールチップを表示させたままにしたいのです。
0479デフォルトの名無しさん
2009/11/12(木) 07:19:28こちらはDebian GNU/Linuxで、Ubuntuの9.1のパッケージのQt Creator1.2.1を
ダウンロードして使ってみたけど、ちゃんと日本語が表示できたよ。
うまくいかないようなら、Nokia Development Frameworksのウェブサイトから
インストーラー付きのQt Creator1.2.1がダウンロード出きるから
それを入れてみるのもいいんじゃない?
でも、Qt Creatorが原因ではないときには、同じ症状になるかも知れないけど。
ttp://qt.nokia.com/downloads-jp
0480デフォルトの名無しさん
2009/11/12(木) 18:47:11もっといい実装があると思うけど、下記のコードで実現可能。
enterEvent()、leaveEvent()ハンドラーをオーバーライドして、
マウスポインターがウィジットの中にあるかどうかを表すm_IsEnteredの値をセットし、
QTimerを使って、アイドル時にQHelopEvent(QEvent::QToolTip,..)
を発生させている。
そして、event()ハンドラーをオーバーライドして、QHelpEventのtype()がQEvent::QToolTipの時に、
ツールチップを表示するようにしている。
下記のコードでは、0.5秒毎にQHelpEvent(QEvent::QToolTip,..)を発生させている。
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
bool event(QEvent* event);
void enterEvent(QEvent* event);
void leaveEvent(QEvent* event);
void mouseMoveEvent(QMouseEvent* mouseEvent);
private slots:
void sendToolTipEvent();
private:
bool m_IsEntered;
QTimer* m_TipTimer;
};
0481480
2009/11/12(木) 18:48:20MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), m_IsEntered(false),
m_TipTimer(0)
{
setToolTip("Tooltip");
setMouseTracking(true);
m_TipTimer = new QTimer(this);
m_TipTimer->setInterval(0.5 * 1000);
connect(m_TipTimer, SIGNAL(timeout()), this, SLOT(sendToolTipEvent()));
resize(800, 500);
show();
}
bool MainWindow::event(QEvent* event)
{
QHelpEvent *helpEvent = static_cast<QHelpEvent*>(event);
if(helpEvent) {
if(helpEvent->type() == QEvent::ToolTip) {
QToolTip::showText(QCursor::pos(), toolTip());
return true;
}
}
return QWidget::event(event);
}
0482480
2009/11/12(木) 18:50:17void MainWindow::enterEvent(QEvent* event)
{
m_IsEntered = true;
if(m_TipTimer and !m_TipTimer->isActive()) {
m_TipTimer->start();
event->accept();
}
QMainWindow::enterEvent(event);
}
void MainWindow::leaveEvent(QEvent* event)
{
if(m_TipTimer and m_TipTimer->isActive()) {
m_TipTimer->stop();
}
m_IsEntered = false;
event->accept();
QMainWindow::leaveEvent(event);
}
void MainWindow::mouseMoveEvent(QMouseEvent* mouseEvent)
{
Q_UNUSED(mouseEvent);
QToolTip::showText(QCursor::pos(), toolTip(), this, frameGeometry());
}
void MainWindow::sendToolTipEvent()
{
if(m_IsEntered == true) {
QHelpEvent toolTipEvent(QEvent::ToolTip, mapFromGlobal(QCursor::pos()), QCursor::pos());
QCoreApplication::sendEvent(this, &toolTipEvent);
}
}
0483480
2009/11/12(木) 18:54:22誤)QToolTip::showText(QCursor::pos(), toolTip());
正)QToolTip::showText(QCursor::pos(), toolTip(), this, frameGeometry());
0484デフォルトの名無しさん
2009/11/12(木) 19:44:15ウインドウに乗せたリストビューだけに反応させたい。
この場合、リストビューを継承したMyListviewを作らないといけないのかな?
そのMyListviewをQt Creatorでグラフィカルに使うために
パッケージ?みたいな変なものを作らないといけないのだろうか?
0485デフォルトの名無しさん
2009/11/12(木) 20:35:57>ドラッグ&ドロップを実装しようと思っているんだけど、
>ウインドウに乗せたリストビューだけに反応させたい。
>この場合、リストビューを継承したMyListviewを作らないといけないのかな?
コードで書くのならば、それが一番素直な気がする。
あとは、イベントフィルターをインストールするとか。
Qt CreatorのGUIフォームエディタ、Qt Desingerなんかで、既に配置したQListView何かに
カスタムな振る舞いを追加したいのならば、「格上げ」でソースを追加することができる。
ソースは、通常のカスタムクラスを書くように、ヘッダと実装ファイルを用意する。
0486485
2009/11/12(木) 20:36:44>そのMyListviewをQt Creatorでグラフィカルに使うために
>パッケージ?みたいな変なものを作らないといけないのだろうか?
この意味がよく分からないんだけれど?
Qtには、View/Modelフレームワークと呼ばれるViewがあり、
具体的にはQTableView、QTreeView、QListViewなどである。
これらはたぶんGUIでアイテムとかは配置できない。
こちらは、View-Control/ModelとDelegateを組み合わせて使用する。
柔軟性が高い。一つのモデルに対して二つのビューで表現させたりできる。
だけど、ちょっとしたものを表示するだけなら
下記のViewを使用するのがいいかもしれない。
もう一つQListWidget、QTreeWidget、QTableWidetというViewがあり、
こちらは、アイテムをGUIで配置できる(制限はあるとは思うけど:あまり使用したことがないのでよく知らない)。
これらは、Qt3に用意されていたViewと同様の機能を提供する。
大概のものはこれで間に合うので、こちらを使用するのもよい。
0487デフォルトの名無しさん
2009/11/12(木) 20:38:360488デフォルトの名無しさん
2009/11/12(木) 20:41:31Qt CreatorのGUIパーツ置き場に起きたいって事。
そこからpush button見たいにフォームにドラッグ&ドロップして
大きさ変えたり、右のプロパティウインドウでいじれるようにしたいってこと。
0489デフォルトの名無しさん
2009/11/12(木) 20:56:06ありがとう。理解できた。
0490デフォルトの名無しさん
2009/11/13(金) 06:22:27Qt Designerのプラグインを作ればできますよ。
http://doc.trolltech.com/4.5/designer-creating-custom-widgets.html
0491デフォルトの名無しさん
2009/11/13(金) 06:28:50> もう一つQListWidget、QTreeWidget、QTableWidetというViewがあり、
> こちらは、アイテムをGUIで配置できる(制限はあるとは思うけど:あまり使用したことがないのでよく知らない)。
> これらは、Qt3に用意されていたViewと同様の機能を提供する。
> 大概のものはこれで間に合うので、こちらを使用するのもよい。
Q*Widgetは、そのままの機能使うだけならば、手軽に使えるのだけれど、
例えば、内部にモデルを抱えていて、差替えができなくて苦しくなったりするので、
機能を追加しようというなら、できるだけQ*Viewを使う方がよいと思う。
0492デフォルトの名無しさん
2009/11/13(金) 16:01:52ListView/TreeView/TableView/ColumnView のViewシリーズのほかに何があるのかな?
ComboBoxでも使えるってのはわかった。
でもLabelやTextEditでは使えないのだろうか?
最近データベース関係やってないから忘れているんだが、
VisualStudioのADO見たいに、フィールドに連結して
値を入れたり表示したりってのを簡単にできないのだろうかと思っているのだが。
Modelからシグナルが発生するようなので、
それを使ってLabelやTextEditに手動で入れるという方法があるというのはわかる。
ただ、setModelみたいにモデルと連結するだけでできる方法があるのかという話。
0493デフォルトの名無しさん
2009/11/13(金) 21:10:19QDataWidgetMapperはどうですか。
http://doc.trolltech.com/4.5/qdatawidgetmapper.html
0494デフォルトの名無しさん
2009/11/13(金) 22:05:12「入門Qt4プログラミング」は必須だな。
QDataWidgetMapperはこの本に載ってないなぁ・・・
ぱっとみ望んだものっぽいのでがんばってみる。
0495デフォルトの名無しさん
2009/11/13(金) 23:43:08コードまで書いてくれてありがとう。
ToolTipについてよく理解できてないのですが、
QMainWindow::setToolTip()を使ったら思い通りの動作になってくれました。
0496デフォルトの名無しさん
2009/11/14(土) 00:16:56http://namidame.2ch.net/test/read.cgi/hidari/1257990721/
0497495
2009/11/14(土) 00:46:39代入コード書いてないのに、QListViewとQComboBoxとQLineEditとQLabelが
全部一緒に変更されるの面白いねw
QLabelの場合、mapper->addMapping(ui->label,0,"text");って
三番目の引数に"text"を指定しなければ表示されなかったので注意。
これで、GUIコードを減らして、GUIの変更にも強いコードが書けるかな。
0498デフォルトの名無しさん
2009/11/14(土) 11:11:19>QLabelの場合、mapper->addMapping(ui->label,0,"text");って
>三番目の引数に"text"を指定しなければ表示されなかったので注意。
QLabelにはUSER属性がtrueなプロパティがないからです。
QLineEdit
Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged USER true)
QLabel
Q_PROPERTY(QString text READ text WRITE setText)
ない理由は、
http://doc.trolltech.com/4.5/properties.html
The USER attribute indicates whether the property is designated as the user-facing
or user-editable property for the class. Normally, there is only one USER property
per class (default false). e.g., QAbstractButton::checked is the user editable property
for (checkable) buttons. Note that QItemDelegate gets and sets a widget's USER property.
0499デフォルトの名無しさん
2009/11/14(土) 11:31:21おお。そっか。プロパティについては本に載っていたから
あとで調べるつもりだったけど、毎度、丁寧に書いてくれてありがとw
0500デフォルトの名無しさん
2009/11/14(土) 17:10:56デフォルトコンテキストメニューが表示されてしまうのですが、このコンテキストメニューはどこで変更できますか?
0501デフォルトの名無しさん
2009/11/14(土) 17:16:370502デフォルトの名無しさん
2009/11/14(土) 19:18:26QMainWindow::createPopupMenu()
0503デフォルトの名無しさん
2009/11/14(土) 20:39:38ディスプレイを大きくする。Visual Studioでと同じ悩み。
0504デフォルトの名無しさん
2009/11/14(土) 20:40:39この関数をオーバーライドすればいいんですね
ありがとうございました
0505デフォルトの名無しさん
2009/11/14(土) 21:09:2114日は出張なので行けそうにないなぁ。
0506デフォルトの名無しさん
2009/11/15(日) 18:31:19Qt creator と Qt Designer の2つのRADが提供されているのですか?
0507デフォルトの名無しさん
2009/11/15(日) 19:50:09Designer:ポトペタ用
0508デフォルトの名無しさん
2009/11/15(日) 19:50:36Qt Designerは文字通りGUIのデザインだけしてXML形式のリソースファイル(?)を出力する
だけのGUIデザイナ。
Qt CreatorはQt Designerにコンパイル/リンク/デバッグの機能を含むIDEを統合
(統合の統合で言葉が変だけど)した本格的RADツール。
0509デフォルトの名無しさん
2009/11/15(日) 19:57:31難しいね。Qtに限らずだけど。
QListWidgetでドラッグ&ドロップやろうとしたんだけど少しはまった。
普通のやり方と微妙に違うんだね。
http://doc.trolltech.com/4.5/model-view-dnd.html
0510デフォルトの名無しさん
2009/11/15(日) 20:26:530511506
2009/11/15(日) 20:39:17なるほど。
つまり
RADとしてQt Creatorが提供されていて、
ただその一部分の機能だけをQt Designerという形で
使用することができる
と言う認識で宜しいでしょうか?
0512デフォルトの名無しさん
2009/11/15(日) 21:57:05やっとQt Creatorができた。
0513デフォルトの名無しさん
2009/11/15(日) 22:03:12そうだったのですか。
じゃあ私が使い始めようと思ったのは
きっと良い時期なのですね。
0514デフォルトの名無しさん
2009/11/15(日) 22:04:54http://doc.trolltech.com/qtcreator-1.3.0-beta/index.html
The goal of Qt Creator is to provide a cross-platform, complete Integrated
Development Environment (IDE) to develop Qt projects. It is available for
the Linux, Mac OS X and Windows platforms.
http://doc.trolltech.com/qtcreator-1.3.0-beta/creator-quick-tour.html
Qt Creator is fully integrated with Qt Designer to help you design user interface
forms just like you would with the standalone version. The Qt Designer integration
also includes project management and code completion. For more information
on Qt Designer, you can refer to The Designer Manual.
http://doc.trolltech.com/4.5/designer-manual.html
Qt Designer is Qt's tool for designing and building graphical user interfaces (GUIs)
from Qt components. You can compose and customize your widgets or dialogs
in a what-you-see-is-what-you-get (WYSIWYG) manner, and test them
using different styles and resolutions.
0515デフォルトの名無しさん
2009/11/15(日) 22:08:42Qt Designerは、Qt 2の頃からありますね。
http://doc.trolltech.com/2.3/index.html
Qt Creatorは、今年から。
0516デフォルトの名無しさん
2009/11/15(日) 22:30:52楽しみになって来ました。
いじってみようと思います。
ありがとうございました。http://changi.2ch.net/test/read.cgi/cchara/1254565608/902
0517デフォルトの名無しさん
2009/11/15(日) 22:34:29【ぬらりひょんの孫】花開院ゆらスレ9【責め9に耐えて】
http://changi.2ch.net/test/read.cgi/cchara/1254565608/
902 名前:名無しかわいいよ名無し[sage] 投稿日:2009/11/15(日) 22:19:49 ID:76U3ufnFO
>>901
竜二兄さんは逮捕されなかったから大丈夫
0518515
2009/11/15(日) 22:41:52この表示のバグは?
サーバーがおかしくなったんでしょうか?
0519デフォルトの名無しさん
2009/11/16(月) 00:35:12モデル側にごちゃごちゃ書かないといかんのだな。
設計の理由はわかるんだが。
0520デフォルトの名無しさん
2009/11/16(月) 02:33:120521デフォルトの名無しさん
2009/11/16(月) 02:56:56SDKやバイナリパッケージではなく、Qt Creatorをソースからインストールすれば使えます。
来月出る1.3では、jomでの並列コンパイルでコンパイル時間も短縮。
0522デフォルトの名無しさん
2009/11/16(月) 06:32:51わからん」と言うエラーが出てストップする。少し違う環境の複数のマシンでやってみたけど結果は同じ。
多分Makefileが間違ってるんだと思う。
同じ環境でQt 4.6βの方は問題なくビルド出来るんだが...
長い時間進んで最後の方で止まるからショック大きいw
一応、土曜日に本家のBug Trackerにログ付きで報告しておいた。
正式版では直してくれると思うけど。
0523デフォルトの名無しさん
2009/11/16(月) 10:17:480524デフォルトの名無しさん
2009/11/16(月) 10:59:33他のアプリからファイルリストをドロップできる
QListView(のサブクラス)を作ろうとしたら
ぜんぜんドロップできなかった。
呼ばれるはずの、QListViewに設定したカスタムモデルの
dropMimeDataが発生しない。
と思ったら、QListViewのサブクラスにデバッグのために書いた
dropEventが処理を奪っていたorz
QListViewなどのModel/Viewアーキテクチャでは
処理の制御をModelと、まだ試してないけど見た目をDelegateがやるから
QListViewのサブクラスは作るまでも無いのかな?
0525522
2009/11/16(月) 14:38:59なぬ〜! 何が違うんだろ。
Qt Creatorのバージョンは1.3β(1.2.92)で間違いない?
コンパイラは俺はVC++ 2008 Express Edition と Windows SDK for Windows Server 2008 and .NET Framework 3.5
(なげーよ)でやってみたんだけど,両方とも同じ結果だった。環境変数の設定が間違ってるといけないので,
普通のコマンドプロンプトやなくて,専用のコンソールウィンドウ(スタートメニューから手繰っていくと出てくるヤツ)
でやったんだけど...PCも一台じゃなくて自宅のと会社ので試したんだけどなぁorz
もちろん PATH には Qt の bin ディレクトリを追加してあるし,念のため QTDIR に Qt のインストールディレクトリ
(俺の場合は C:\Qt\4.6.0-beta1 )を設定しておいたんだけど...QMAKESPEC は自動認識するようなので,
特に設定しなかった(ビルド中のログを見ると,ちゃんと win32-msvc2008 になってる)。
どんな環境で成功したか教えてもらえると嬉しい。ヨロシク。
0526デフォルトの名無しさん
2009/11/16(月) 14:52:290527522
2009/11/16(月) 16:04:21つ ttp://bugreports.qt.nokia.com/browse/QTCREATORBUG-281
ここの添付ファイル qtcreator_builderror.txt がビルドに失敗した最後の方のログ。
NMAKE : fatal error U1073: don't know how to make '..\..\..\..\qtc\qt-creator-qt
-creator\src\plugins\qt4projectmanager\customwidgetwizard\customwidgetwidgetswiz
ardpage.ui'
と言うエラーが出てストップ。なのでqmakeで作成されたMakefileのバグだと思ったんだけど...
ちなみに make release してるけど,ただ make にしても結果は同じだった。
0528デフォルトの名無しさん
2009/11/16(月) 18:10:44まず、customwidgetwidgetswizardpage.uiがあるかどうか。
次に、Makefileに、このファイルについてのルールがどう出ているか。
0529デフォルトの名無しさん
2009/11/16(月) 21:18:57前にコンパイルしていたんだけど、OS入れ替えがあって
入れ替え後は面倒なんで配布しているやつを使っていたから
ついでに、もう一回コンパイルしてみたよ。
で、それを昼ごろやったんだけど、今思い出したw
Help->Aboutを見たら、Qt Creator 1.2.92ってかいてある。
ビルドも今日の夕方版
ソースコードは、ソースコード管理システムから落としてない。フォルダに落ちていたファイルを見る限り、
qt-creator-qt-creator-1.3.0-beta.tar.gz とqt-everywhere-opensource-src-4.6.0-beta1.zip を落としているね。
Windows SDK 7.0(Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1)を使った。
Microsoft Visual Studio 2008 Standardは入っているけど、SDK使ってコンパイルしているからこれ関係ないはず。
SDKのCMD shellを修正して、以下のようにしてシェル起動
C:\Windows\System32\cmd.exe /E:ON /V:ON /T:0E /K "C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\SetEnv.cmd" /xp /x86 /release
環境変数は特に設定していないはず。いろんな環境を入れると、コマンドが混ざっていやになるのよ。
だからインストーラーが勝手に設定するのは放置しているけど、手動では設定しないで
バッチファイルやら作って専用のシェル環境を作ってる。
今回は手抜きでSDKのCMD shellから set path=C:\Qt\4.6.0-beta1-x86\bin;%path と打ち込んだw
4.6.0-beta1-x86ってのは、4.6.0-bata1をWindows SDKでx86向けに自分でコンパイルした奴ね。
あとは、qmake、nmake で終わり。あ、nmakeにreleaseつけてないやw 遅いのか? あ、nmakeの代わりにjom使ったほうがマルチコアなら速いんだったw
念のため。生成されたqtcreatorを起動するときは、C:\Qt\4.6.0-beta1-x86\binを環境変数PATHにいれる必要があるよ。
jom.exeはどっかから探してきてね。
0530デフォルトの名無しさん
2009/11/16(月) 21:19:550531522
2009/11/16(月) 22:14:55レスサンクス。
> まず、customwidgetwidgetswizardpage.uiがあるかどうか。
あるはずだと思うんだが、なぜかない。エラーメッセージを見ると、customwidgetwidgetswizardpage.ui
を作ろうとしているように見えるけど、.ui はQt Designer等で作られるXML形式のリソースファイルで、
これを uic でコンパイルするんだから、このファイルがないのがおかしいようだ。
> 次に、Makefileに、このファイルについてのルールがどう出ているか。
いろんなところにMakefileが散らばっていて、親のMakefileから呼び出されるようなんだが、
問題の customwidgetwidgetswizardpage.ui が出てくるMakefile は、1つしかなくて、ルールは、
ui_customwidgetwidgetswizardpage.h: ..\..\..\..\qtc\qt-creator-qt-creator\src\plugins\qt4projectmanager\customwidgetwizard\customwidgetwidgetswizardpage.ui
c:\Qt\4.6.0-beta1\bin\uic.exe ..\..\..\..\qtc\qt-creator-qt-creator\src\plugins\qt4projectmanager\customwidgetwizard\customwidgetwidgetswizardpage.ui -o ui_customwidgetwidgetswizardpage.h
となってる(コピペしたら改行位置が変で読みにくくてスマソ)。
これからすると、customwidgetwidgetswizardpage.ui から uic.exe で ui_customwidgetwidgetswizardpage.h
を作ろうとしているようだjから、やはり customwidgetwidgetswizardpage.ui ファイルがないのがおかしいとしか考え
えられないと思うんだけど。
0532522
2009/11/16(月) 22:23:38丁寧な解説ありがとう。
> ソースコードは、ソースコード管理システムから落としてない。フォルダに落ちていたファイルを見る限り、
> qt-creator-qt-creator-1.3.0-beta.tar.gz とqt-everywhere-opensource-src-4.6.0-beta1.zip を落としているね。
俺が落としたファイルと全く同じだ。
> Windows SDK 7.0(Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1)を使った。
> Microsoft Visual Studio 2008 Standardは入っているけど、SDK使ってコンパイルしているからこれ関係ないはず。
SDKのバージョンは違うけど、多分関係ないだろうなぁ。
> SDKのCMD shellを修正して、以下のようにしてシェル起動
> C:\Windows\System32\cmd.exe /E:ON /V:ON /T:0E /K "C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\SetEnv.cmd" /xp /x86 /release
サンクス。試してみる。
で、>>531に書いたとおり、customwidgetwidgetswizardpage.ui が見当たらないんだけど、あなたのところにはある?
同じファイルをダウンロードしたんだから、俺のところだけないとすると、解凍ツールのバグだったりして。
総合アーカイバープロジェクトにおいてあるDLLを使うファイラーで解凍したんだけど、なんか怪しい気がしてきた。
ダウンロード時のファイル化けは考えにくいしね。ちょっとチェックして見ようと思う。
0533デフォルトの名無しさん
2009/11/16(月) 22:49:57俺は7zip使ってる。
tar.gzの中にこんなのがある。パス長いから見た目チェックミスりそうだから、
コピペするよw
C:\Qt\qt-creator-qt-creator-1.3.0-beta.tar.gz\qt-creator-qt-creator-1.3.0-beta.tar\qt-creator-qt-creator\src\plugins\qt4projectmanager\customwidgetwizard\
というディレクトリに
customwidgetwidgetswizardpage.ui
というファイルがある。
0534デフォルトの名無しさん
2009/11/16(月) 22:52:22qt-creator-qt-creator-1.3.0-beta.tar.gz
9.17 MB (9,624,511 バイト)
34F264E4F1A06433A9CD6EDE7A39A1E4
0535522
2009/11/16(月) 23:29:10ファイルのほうは正常だった。
> それアーカイバのせいじゃね?w
やっぱりそうらしい。これまで二画面ファイラー Dyna と 統合アーカイバープロジェクトの
DLLでやってたんだけど、別のツール(Lhaz)で解凍してみたら、ディレクトリ構成が変わったorz
で、問題の customwidgetwidgetswizardpage.ui も、所定の場所にある。
なんか Dyna にバグがありそう。便利でずっと使ってたし、こんなこと初めて。
残念だけど、圧縮・解凍は別のツールに変えた方が良さそうだ。
今、nmake でビルドを始めたところ。果報は寝て待つことにしようと思う。
まだ結果は出たわけじゃないけど、皆さんありがとう & お騒がせスマソ。
明朝、うまくいってたら、本家のBug Trackerにも報告しなくちゃ...
0536デフォルトの名無しさん
2009/11/17(火) 01:23:43bool QLayoutItem::hasWidthForHeight ()がないのはなぜでしょう?
これが無くて困ってまして、仕方なくQtへのパッチを作って対処しようかと
思うのですが、影響範囲がすごく大きくなりますよね。
なにか良い手はないでしょうか。
0537デフォルトの名無しさん
2009/11/17(火) 02:24:050538デフォルトの名無しさん
2009/11/17(火) 02:40:51いかんなぁ。リストビュー=Windowsのアレというイメージがある
0539デフォルトの名無しさん
2009/11/17(火) 03:34:03こっちのほうがWindowsのリストビューに近いか?
0540デフォルトの名無しさん
2009/11/17(火) 05:53:45>bool QLayoutItem::hasWidthForHeight ()がないのはなぜでしょう?
どんな場合に必要ですか。
0541522
2009/11/17(火) 11:07:59おかげさまで,Qt Creator 1.3βのをWindows SDKでビルドすることに成功しました。
で,makeの最後に,
c:\Qt\4.6.0\bin\lrelease ..\..\..\..\qtcsrc\qt-creator-qt-creator\share\
qtcreator\translations\qtcreator_ru.ts -qm qtcreator_ru.qm
Updating 'qtcreator_ru.qm'...
Generated 2760 translation(s) (2607 finished and 153 unfinished)
Ignored 10 untranslated source text(s)
みたいなメッセージが10個くらい出るんだけど,これって問題ないの?
とりあえずざっと使ってみた限りでは大丈夫そうだけど。
それと,Qt Creatorからアプリをビルドする時は,nmakeじゃなくてjomを使うみたい
なので,NOKIAのサイトから拾ってきて一件落着。
ありがとうございました。
0542522
2009/11/17(火) 11:10:56数を表示してるだけみたいだね。
0543デフォルトの名無しさん
2009/11/17(火) 11:20:53Qt Creator 1.3のオプションでnmakeを使うようにも設定できたよ。
まあ、jomでいいと思うけど。
0544デフォルトの名無しさん
2009/11/17(火) 12:12:28Qt付属のFlowLayoutデモのVertical版です。
基本機能のフローレイアウトは実現できるのですが、
これを別のレイアウトの中に複数入れるようなことをすると、
高さに対応する横幅を指定出来ないために、内臓するウィジットの横幅総計
と全く関係ないサイズになってしまいます。
アドバイスありますでしょうか。
0545デフォルトの名無しさん
2009/11/17(火) 16:43:28だいぶ大変そうだな
ビルド済みのを配ってほしい
0546522
2009/11/17(火) 17:02:48> Qt Creator 1.3のオプションでnmakeを使うようにも設定できたよ。
うん、見つけた。左の[Projects]ボタンを押すと、[Build Steps]で設定できるね。
>>545
俺の場合は解凍ツールがアホだっただけで、ビルド自体はそんなに大変じゃ
ないよ。時間は掛かるけど。あとREADMEがちょっと説明不足気味かな。
makeの後ろにreleaseつけないとデバッグビルドになるなんて書いてないし。
0547522
2009/11/17(火) 17:19:07アプリのコンパイル/リンクは通るんだけど、cdbが動かない。デバッグをスタート
させると。
「The application reaquires the debugger engine 'Cdb', ehich is disabled.」
というメッセージボックスが出る。
Debugging Tools for WindowsはもちろんインストールしてPATHも通してある。
Qt Creatorのマニュアルを良く見たら(下記)、
ttp://doc.trolltech.com/qtcreator-1.2/creator-debugging.html
「When building Qt Creator using the Microsoft Visual C++ Compiler, the
"%ProgramFiles%\Debugging Tools for Windows" path will be checked
to ensure that all required header files are there.」
なんて書いてある。これってもしかして、Qt Creatorをビルドする前に
Debugging Tools for Windowsをインストールしとけって意味なのか?
だとすると、やっぱり>>545の言うように、ビルドするの大変だわ。
設定いろいろ見たけど、それらしいものはない。試しに[Tools]→[Options]→[Debugger]
→[Gdb]の[Gdb location]に無理矢理cdbのパスを書いてみたが、関係なかった。
それと、cdbはデフォルトでは %ProgramFiles%\Debugging Tools for Windows (x86)
にインストールされるんだが、前述の説明では %ProgramFiles%\Debugging Tools for Windows と
なってる。これって単なる間違いだよねぇ?
cdbちゃんと動いてる人、教えてもらえると助かる。よろしく。
0548522
2009/11/17(火) 17:22:21× 「The application reaquires the debugger engine 'Cdb', ehich is disabled.」
○ 「The application reaquires the debugger engine 'Cdb', which is disabled.」
タイポスマソ
0549デフォルトの名無しさん
2009/11/17(火) 17:28:50必要なヘッダーファイルがあるか
"%ProgramFiles%\Debugging Tools for Windows"をチェックしとけ
0550デフォルトの名無しさん
2009/11/17(火) 18:21:48>なんて書いてある。これってもしかして、Qt Creatorをビルドする前に
>Debugging Tools for Windowsをインストールしとけって意味なのか?
そうだよ。書かれていないと何度もはまるよね。
0551522
2009/11/17(火) 18:28:17> 必要なヘッダーファイルがあるか
> "%ProgramFiles%\Debugging Tools for Windows"をチェックしとけ
「必要なヘッダーファイル」って何ですか?
どこに書いてあります? 少なくともQt CreatorのREADMEのビルド方法の記述には見当たらないし、
マニュアルでも俺には見つけられない。
それと、デフォルトのインストールディレクトリである"%ProgramFiles%\Debugging Tools
for Windows (x86)"ではなくて、"%ProgramFiles%\Debugging Tools for Windows"に
ビルド前にインストールしとかなきゃいけないの?
そう言うんだからあなたは成功したんだと思うので、具体的に情報ください。
よろしくお願いします。
0552522
2009/11/17(火) 18:37:23あぁ、やっぱりそうなんだ。READMEに書いといて欲しいなぁ。
情報サンクス。
とりあえずソースを展開したディレクトリ以下からgrepで"Debugging Tools"を
さらってみたら、cdb.pri と言うファイルにそれらしい記述があった。
インストールディレクトリはどちらでもいいみたい。
これ以上落とし穴がないことを祈って、もう一度ビルドし直します。
0553デフォルトの名無しさん
2009/11/17(火) 18:57:17ビルドする前に qmake -r しておいた方がいいと思います。
0554522
2009/11/17(火) 19:08:00> ビルドする前に qmake -r しておいた方がいいと思います。
情報ありがとう。qmake -helpで見ても-rと言うオプションは見つかりませんが、何ですか?
0555デフォルトの名無しさん
2009/11/17(火) 19:16:560556デフォルトの名無しさん
2009/11/17(火) 19:32:42> Debugging Tools for Windowsをインストールしとけって意味なのか?
そうなのか? 先に入れたっけなぁ?入れてたかもしれないなぁ。
覚えてないや。
> 設定いろいろ見たけど、それらしいものはない。試しに[Tools]→[Options]→[Debugger]
> →[Gdb]の[Gdb location]に無理矢理cdbのパスを書いてみたが、関係なかった。
俺のところでは、[Tools]→[Options]→[Debugger] に
Cdbの設定画面があるよ。ここで、パスを指定できる。
0557デフォルトの名無しさん
2009/11/17(火) 19:38:44-r は、再帰的に qmake かけるオプションです。
なのでQtCreatorのトップディレクトリで実行してください。
0558デフォルトの名無しさん
2009/11/17(火) 19:53:55スクロールバーが出ます。
QGraphicsScence::RemoveItem()で消しても、スクロールバーが出っ放しなんですが、
ViewかSceneをリセットすることはできないのでしょうか?
0559デフォルトの名無しさん
2009/11/17(火) 20:19:47まとまった情報が見つからないorz もっと良い方法があれば修正してなー。
解説
QTreeViewで一覧を描画するときそれを行うのがデリゲートというもの。
デフォルトではQStyledItemDelegateが設定されている。
QItemDelegateというのもあるがこっちはデザインが古臭い。
(たぶんQStyledItemDelegateがOSネイティブで、QItemDelegateがQt描画)
そこで、QStyledItemDelegateのサブクラスMyDelegateを作る。
paintをオーバーロードして描画すればいいだけなんだが、
選択・マウスオーバー行をあらわすハイライトは
QStyledItemDelegateのもの組み合わせて作りたい。
QItemDelegateにはそれをやってくれるdrawFocusがあるのだが・・・の解決方法。
void MyDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
//二列目は独自の描画
if(index.column()==1) {
//デフォルトの選択行の描画 selected
QStyleOptionViewItemV4 opt = option;
initStyleOption(&opt, index);
const QWidget *widget = opt.widget;
QStyle *style = widget ? widget->style() : QApplication::style();
style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, widget);
//ここにpainterを使って独自の何か書く
} else {
//二列目以外は親クラスに渡す
QStyledItemDelegate::paint(painter, option, index);
}
}
0560522
2009/11/17(火) 22:10:32先にDebugging Tools for WindowsをインストールしてからQt Creatorをビルドしたら、
CDBの設定画面が出てきました。だから>>556さんの場合は、先にデバッガをインス
トールしてあったんだと思います。
VC++でビルドすると言うことは、デバッガはCDBに決まってるわけで、ビルド時に
CDBの存在をチェックする必要はないような気がするんですけどね。
しかもCDBの設定画面から、CDBのパスが設定できるって、何か変な気がします。
0561522
2009/11/17(火) 22:18:50-recursive の略なんですね。今回は -r を指定して qmake してみました。
nmakeでも途中で qmake を走らせて、各所に Makefile を作ってそれをまた実行する
つくりになっているのを、先に実行させて nmake ではそのプロセスをスキップさせようと
いうことでしょうか?
ちなみに今回は最初、nmake ではなくて jom でビルドを試みましたが、途中でエラー
が出てダメでした。理由はわかりませんが、いい加減調べるのに疲れたので nmake で
ビルドさせたら無事に完了しました。
やっとまともなVC++版Qt Creatorが出来ました。皆さんありがとう。
0562デフォルトの名無しさん
2009/11/17(火) 22:29:13いえ、ちゃんと確認したわけではないですが
qmake しないと nmake するための Makefile が
生成されていないだろうから、qmake -r をオススメしたわけです。
なんにせよ、うまくいったようで何よりです、おめでとうございます
0563522
2009/11/17(火) 23:22:55先に各所にMakefileを作るか、ビルド中に作るかの違いはありますが、
qmakeに-rを指定しなくても大丈夫なようですよ。
> なんにせよ、うまくいったようで何よりです、おめでとうございます
ありがとうございます。しかし、もう少しビルド方法を克明にREADMEなりINSTALLなりの
テキストファイルに書いて欲しいですね。せっかく苦労したから、時間が出来たら何処かに
まとめようと思います。
0564デフォルトの名無しさん
2009/11/17(火) 23:43:17もっかいやり直しかorz
0565デフォルトの名無しさん
2009/11/18(水) 02:01:01リリース版でもあるといいが。
0566デフォルトの名無しさん
2009/11/18(水) 08:55:16それならQt CreatorもVC++2008のバイナリ出してくれればよかったのに...
0567デフォルトの名無しさん
2009/11/18(水) 10:13:00別に Qt Creator 関係なくね?
0568デフォルトの名無しさん
2009/11/18(水) 10:56:48Qt自体がVS版バイナリがある意味はあると思う。
でも、配布されているQt Creatorバイナリは
gdbもcdbもどちらでも使えるから、どうでもいいと思う。
というかQt Creatorバイナリはどっちでコンパイルされているんだろうか?
それよりも、Qt CreatorのWindows 64bit版を出してくれ。
64bit版じゃないとコンパイルもデバッグもできない。
0569559
2009/11/18(水) 11:12:36void MyDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
//二列目は独自の描画
if(index.column()==1) {
//デフォルトの選択行の描画 selected
QStyleOptionViewItemV4 opt = option;
initStyleOption(&opt, index);
const QWidget *widget = opt.widget;
QStyle *style = widget ? widget->style() : QApplication::style();
style->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, painter, widget);
//ここにpainterを使って独自の何か書く
} else {
//二列目以外は親クラスに渡す
QStyledItemDelegate::paint(painter, option, index);
}
}
0570デフォルトの名無しさん
2009/11/18(水) 14:11:0264bit 版が Windows でも欲しいのは同意。
0571デフォルトの名無しさん
2009/11/18(水) 18:55:57印象なんだけど(デモビデオとかちらっと見た感じで)、
実際使ってみて、変数とか全然補完されない、ってか補完の仕方がわからんのだが
なんかこう vi の自動補完みたいにさくさくできんもんかなぁ?
0572デフォルトの名無しさん
2009/11/18(水) 19:04:27http://qt.nokia.com/doc/qtcreator-1.3.0-rc1/creator-code-editor.html
CTRL + Space 押さなきゃいかんのか
0573デフォルトの名無しさん
2009/11/18(水) 19:11:44ヘッダファイルに、戻り値 メソッド(引数,引数,引数);
cppファイルに、戻り値 クラス名::メソッド(引数,引数,引数)
って書かないといけないのがめんどくさすぎる。
どうにかならんの?
0574デフォルトの名無しさん
2009/11/18(水) 20:22:08巣に帰れ
0575デフォルトの名無しさん
2009/11/18(水) 21:41:100576デフォルトの名無しさん
2009/11/18(水) 21:45:48どこの板も同じだな。
0577デフォルトの名無しさん
2009/11/18(水) 21:47:44落ち着け。>>573は何も変なこといってないだろう?
0578デフォルトの名無しさん
2009/11/18(水) 22:00:460579デフォルトの名無しさん
2009/11/18(水) 22:38:36C++の話だよな?
つまり>>573はC++の基礎すらままならないわけであり
0580デフォルトの名無しさん
2009/11/19(木) 01:58:03D言語まじお勧め
0581デフォルトの名無しさん
2009/11/19(木) 02:38:38namespace で解決出来ないのかな?w
0582デフォルトの名無しさん
2009/11/19(木) 02:59:48つか CTRL+C, CTRL+V で解決できる気がするw
0583デフォルトの名無しさん
2009/11/19(木) 06:06:35ショートカットで GotoBlockStart というのに割り当てられてるらしく
ブロックの最初((とか{とか)に移動してしまいます。
ショートカットを無効にしてみたんですがインプットモードのとき押すと
左矢印が表示されるだけでESCを押したことになりません。
解決方法はないでしょうか?
0584デフォルトの名無しさん
2009/11/19(木) 08:07:33> Qtの話じゃなくて
> C++の話だよな?
どこが?
簡単にcppファイルとヘッダファイルに
コードを書いて補完してくれるのはエディタの仕事だろ。
0585522
2009/11/19(木) 09:45:18うーん。俺がβ版のビルドで四苦八苦しているうちにRCが出てたんだorz
Qt 4.6.0-RCもVC用とMinGW用のインストーラーが用意されてるし,Qt Creator 1.3-RCの
Windows版もインストーラー形式。で,このQt CreatorはVCにもMinGWにも使える。
試しに,Qt 4.6.0-RCのVC用とMinGW用を別のディレクトリにインストールしてみたら,
Qt Creatorで設定をちゃんとやってやれば,切り替えて使えた!
0586デフォルトの名無しさん
2009/11/19(木) 10:06:25カッとなってfakevimhandler.cppを変更して動くようにした
ついでにコマンドモード時に [ や ] が入力できるバグも直した。
どうしてくれよう。
0587デフォルトの名無しさん
2009/11/19(木) 10:09:34merge request
0588デフォルトの名無しさん
2009/11/19(木) 11:08:430589デフォルトの名無しさん
2009/11/19(木) 11:42:57C++の糞仕様はもうどうにもならないだろうけど、
エディタで補完するぐらいは出来るだろ。
特にオーバーロードは、すでに書いてあるものを
複写するだけなんだから簡単に出来るはず。
たぶん○○の場合はどうする?なんて細かい問題を言ってくるだろうけど、
こまかいことはどうでもいいんだよ。だいたい出来ればいいんだからさ。
0590デフォルトの名無しさん
2009/11/19(木) 11:47:350591デフォルトの名無しさん
2009/11/19(木) 11:54:33だがこういうのはエディタにつけるべき機能だ。
0592デフォルトの名無しさん
2009/11/19(木) 12:01:190593デフォルトの名無しさん
2009/11/19(木) 12:52:44ヘッダーファイルに記述するときに補完できるようになってるし、
ヘッダーファイルに記述してあるメソッドの引数をソースファイルで
補完できるようになってるぞ。
戻り値は難しいが。
試してみろ。
0594デフォルトの名無しさん
2009/11/19(木) 13:49:22cppを先に書いてhを出力してくれるツールや
hを先に書いてcppのスケルトン出力してくれるツールもある
それにIDEならGUIからプロジェクトとかクラス作っただけで一通り出来てるだろ
0595デフォルトの名無しさん
2009/11/19(木) 13:56:02それって、オーバーライド元がconst付きのメソッドの場合、
オーバーライドすると、メソッドの、constがなくなって);ってなるんだよね。
C++の仕様ってメソッドのconstはずしてオーバーライドってやっていいんだっけ?
まずいと思うんだが。
あと戻り値も確かに補完されない。
もうちょっと足りないなぁ。
0596デフォルトの名無しさん
2009/11/19(木) 14:05:180597デフォルトの名無しさん
2009/11/19(木) 14:16:24ヘルプを見るだけなら assistant を起動すればいいが、
連携は出来ないな。
0598デフォルトの名無しさん
2009/11/19(木) 14:17:34QtAssistant ってがあるよ。そゆことじゃなくて?
0599デフォルトの名無しさん
2009/11/19(木) 17:01:30(今は後から押された方のkeyPressEventしかこない)
Ruby/Qt/OpenGLで3Dシューティングを作っています。Ubuntu9.04 amd64
http://www.dotup.org/uploda/www.dotup.org374441.png
直角にしか移動できねえ....
0600デファルトの名無しさん
2009/11/19(木) 21:34:52変化も移動もしないただのサンプルとして
0601デフォルトの名無しさん
2009/11/20(金) 14:28:050602デファルトの名無しさん
2009/11/21(土) 11:20:44何を選べばいいの?
0603デフォルトの名無しさん
2009/11/21(土) 14:50:360604デフォルトの名無しさん
2009/11/21(土) 21:40:40現状 Shift-JIS にするしかないんじゃないかな?
0605デフォルトの名無しさん
2009/11/22(日) 00:10:43http://qt.nokia.com/developer/qt-4.6-preview
0606デフォルトの名無しさん
2009/11/22(日) 00:18:07Qt Creator 1.3 RCで、VCisual Studio 2008版と切り替えて使えてる。
ttp://qtusersforum.s2.zmx.jp/forum/viewtopic.php?f=5&t=131
0607デフォルトの名無しさん
2009/11/22(日) 00:21:32×VCisual Studio 2008
○Visual Srudio 2008
実際にはVSは必要なくて、SDKだけでOK。
0608デフォルトの名無しさん
2009/11/22(日) 01:44:530609デフォルトの名無しさん
2009/11/22(日) 05:31:45Windowsのシステムロケールを英語にするとUTF-8の一本でOK
0610デフォルトの名無しさん
2009/11/23(月) 04:44:55SDKのみじゃcrt使えないんじゃない?new deleteすらできん
0611デフォルトの名無しさん
2009/11/23(月) 07:31:33何そのガセネタ。
俺は「Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1」だけで、
Visual Studioとかインストールしてないけど、new/deleteはもちろん、STLだって
バリバリに使えるよ。
0612デフォルトの名無しさん
2009/11/23(月) 15:50:03QSplitterを使ってウィンドウを分割したのですが、
親ウィンドウのサイズをマウスで変更すると、
子ウィンドウ(QSplitter)の境界線の位置が一緒に移動してしまいます。
親ウィンドウのサイズを変更しても境界線の位置がずれないようにするには
どうすればいいのでしょうか?
0613デファルトの名無しさん
2009/11/23(月) 20:26:03tabWidgetはデフォルトでタブが2つなんですが、これを3つにしたいです。
Designerで簡単に、追加できませんか。
0614デフォルトの名無しさん
2009/11/24(火) 02:22:24コンテキストメニューを表示させて、ページの挿入で。
0615デフォルトの名無しさん
2009/11/24(火) 09:43:44setStretchFactor を使う。変わらないほうを0にする。
0616613
2009/11/24(火) 10:00:30ありがとう
0617デフォルトの名無しさん
2009/11/25(水) 14:57:57正直、XCodeでGUI作るのとObjective-Cが嫌なので、C++/Qtなわけですが。
0618デフォルトの名無しさん
2009/11/25(水) 15:05:43あっても使いたくないんでしょ?
0619デフォルトの名無しさん
2009/11/25(水) 15:41:15動くの?
0620デフォルトの名無しさん
2009/11/25(水) 17:33:59�d
0621デフォルトの名無しさん
2009/11/25(水) 17:35:36オライリーのQt本は買ったし、ネットでググりまくりでクラスライブラリはそこそこイメージつかめたのに、イベントハンドラ1つも作れないおorz
0622デフォルトの名無しさん
2009/11/25(水) 17:42:08Qt4の本を買わずにQtの本を買っていたら・・・哀れむw
Qt Designerって今使う理由あるの?
Qt Creator使えよ。
あと、Qt Creatorの話。イベントハンドラは、Go to Slotから行う。
イベントハンドラじゃなくて、スロットっていうんだけどな。
0623デフォルトの名無しさん
2009/11/25(水) 17:44:35Qt Creatorのシグナル/スロットの編集(F4)って使ってる?
というか、使える?
ボタン押したらクローズって使い方は
確かにあると思ったけど、他はすべてコードで書きたくなる。
0624621
2009/11/25(水) 17:53:12いえいえ、Qt4にしますた。
しかし読んでるのは、ウェブサイトから落とした「Qt 4.3 Whitepaper/日本語 PDF (A4 - 2.9 MB)」です。
>Qt Creator使えよ。
インスコしますた。
>イベントハンドラは、Go to Slotから行う。
ラジャw
>Qt Creatorのシグナル/スロットの編集(F4)って使ってる?
いきなり敷居が高すぎます。
>確かにあると思ったけど、他はすべてコードで書きたくなる。
すべてコードを書くだけでOKです。
ドキュメントでクローズは専用スロット(関数?)があるみたいなの見ましたが要りませんw
0625621
2009/11/25(水) 17:58:57これって意味理解するの大変ですね。
なれればスロットをサクサク作るだけなんでしょうね。
とりあえず「Signal and slot editor」の使い方ググってみます(チラウラw)
0626デフォルトの名無しさん
2009/11/25(水) 18:22:52ごめん。これ君ではなく、ここらへんにいる人全体に聞いたのw
個人的にこの機能自体が便利な機能(使える機能)とは思えなくて。
(他の人の反論が無ければ)使わなくていいよw
0627621
2009/11/25(水) 18:27:52ヲォ、クリックイベント作れました。イベントハンドラ作れれば後はPDFドキュメントとオライリーで何とかなりまつ(チラ裏)
0628デフォルトの名無しさん
2009/11/26(木) 07:05:58ttp://www.youtube.com/watch?v=QLT7oEt6gLE
Qt Creatorのgui作成でラベル、テキスト入力欄、ボタンを追加して
ボタンを押すとテキストの内容がラベルに入るチュートリアル(3分半)
0629デフォルトの名無しさん
2009/11/26(木) 14:45:27シグナル/スロットの編集ってそう使うのか。
やっとわかった。でも微妙な気がする。
実用レベルのアプリだと、赤い線がごちゃごちゃと。
まあ、コードで書いても見た目が違うってだけか。
0630デフォルトの名無しさん
2009/11/26(木) 14:56:320631デフォルトの名無しさん
2009/11/27(金) 01:53:06処理する場合、Qtプログラム固有の処方ってあるのかな?
普通のC言語プログラムだと、SIGINTに対してエラーハンドラ関数を指定して、
外部からシグナルを受け取ったらそのエラーハンドラ関数を呼び出すようなことをすると思うけど。
0632デフォルトの名無しさん
2009/11/27(金) 03:04:25例えば、Linuxのシェルからforegroundで実行しているアプリケーションを
いきなりCntrl-Cでkillしたりとか、Windowsのタスクマネジャの終了ボタンで
アプリケーションを強制終了させる場合でも、QEventで処理できるのかな?
なんか良いサンプルプログラムはありませんか?
0633デフォルトの名無しさん
2009/11/27(金) 06:37:51Pythonのthreading.Thread クラスを使うべきなのか
Qtのスレッドクラスを使うべきなのか
悩んでたら寝てしまった。
0634デフォルトの名無しさん
2009/11/27(金) 10:19:32Qt 4.5.3: Calling Qt Functions From Unix Signal Handlers
http://doc.trolltech.com/4.5/unix-signals.html
0635デフォルトの名無しさん
2009/11/27(金) 11:33:35含まれてるけど、O/Rマッピングの機能もありますか?
0636デフォルトの名無しさん
2009/11/27(金) 11:54:45QSqlRelationalTableModel、QSqlTableModel。
0637デフォルトの名無しさん
2009/11/28(土) 04:15:25あ、あるんだ。有難う。
0638デフォルトの名無しさん
2009/12/01(火) 09:02:000639デフォルトの名無しさん
2009/12/01(火) 13:26:45MainWindowにステータスバー付けたいのですが、
コンポーネントのパレットにステータスバーが無いことないですか?
0640デフォルトの名無しさん
2009/12/01(火) 13:54:060641639
2009/12/01(火) 14:14:580642639
2009/12/01(火) 15:20:37QStatusbar *pstatus = statusbar();
pstatus->showMessage(tr("Ready"));
でステータスバーが表示されましたが、
つまり、MainWindowには、最初からQStatusbarがnewされてるってことですか?
0643デフォルトの名無しさん
2009/12/01(火) 18:50:00って、どうやって使うんでしょう。
0644デフォルトの名無しさん
2009/12/01(火) 19:24:04JAVAやwxWidgesのレイアウトマネージャのように
中を埋めるやり方ではないのですか?
なんていうか、レイアウトをペタペタはっても、
領域を埋めようと広がらない。。。
centerWidgetsにframeを貼ったら、
frameは全画面っぽいのですが、
そのframeにverticalLayoutやwidgetを貼っても、
貼った大きさのまま。
ウィンドウが大きくリサイズされたら中大きくなって欲しいのですが。
0645デフォルトの名無しさん
2009/12/01(火) 20:22:02QWidget を直接/間接的に継承してウィジェットを作っていますが、
たとえば timerEvent などのイベントハンドラを子クラスで
定義したとき、親クラスのハンドラは放っておいていいのでしょうか?
子クラス側から連鎖的に親クラスの同名のハンドラも呼び出すべきなのでしょうか?
0646デフォルトの名無しさん
2009/12/01(火) 21:04:440647デフォルトの名無しさん
2009/12/01(火) 23:23:22statusbar() を最初に呼出した時に new されます。
0648デフォルトの名無しさん
2009/12/01(火) 23:30:51http://doc.trolltech.com/4.6/layout.html
http://doc.trolltech.com/4.6/designer-layouts.html
をじっくりと読んでみましょう。Java も似たようなのあります。
0649デフォルトの名無しさん
2009/12/02(水) 00:45:290650デフォルトの名無しさん
2009/12/02(水) 00:50:40俺もレイアウトまよったわw
右上のオブジェクトとかクラスがあるところを見る。
とりあえず見るだけで、MainWindowにもどって右クリック。
レイアウトというのがあるので、とりあえずLay out in a Grid にでもしてみる。
そして右上の変化を確認した後、いろんなものとか
Layoutsのなかのやつとか入れて遊んでみる。
0651デフォルトの名無しさん
2009/12/02(水) 07:23:41もっと騒いでくれないとわかんねーよ
0652デフォルトの名無しさん
2009/12/02(水) 09:29:12なんと! Qt4.6の正式リリースが・・・・
きてるぞ!
0653デフォルトの名無しさん
2009/12/02(水) 10:23:000654デフォルトの名無しさん
2009/12/02(水) 11:49:15SDKダウンロードに着て無くない?
それともSDKでなくて、フレームワークモンリー?
0655デフォルトの名無しさん
2009/12/02(水) 15:23:33Qt DesignerやQt Creatorでのフォーム編集のこつです。
a) フォームの上に並んだ複数のウィジェットやレイアウトを選択して、
ツールバーのレイアウトアイコンをクリックすると、選択したウィジェット
がレイアウト従って、縦や横に並べられる。(以下の b の操作をしていない
ならば、フォームの大きさを変えてもウィジェットの大きさは追従しない。
b) フォームの上に並んだウィジェットレイアウトのどれもが選択されてい
ない状態にして、ツールバーのレイアウトアイコンをクリックすると、
フォームにレイアウトが付いて並べられる。こうすると、フォームの大きさ
を変えるとウィジェットの大きさも追従する。コードでレイアウトを使って
いる場合には忘れることは殆どないが、初めてQt DesignerやQt Creator
でフォーム編集をすると、分かり難くてはまりやすい。Qt 4.5からは、
オブジェクトインスペクタに、アイコンでレイアウトが付いているかいないか
が表示されるようになったので、一番上のベースウィジェットに禁止マークが
ないレイアウトアイコンがあったら、この b) の操作をしてレイアウトを付け
るようにする。
c) ウィジェットボックスのレイアウトアイコンは、中にウィジェットが入って
いない空のレイアウトで、a のように、選択したウィジェットやレイアウトを
並べるのではなく、空のレイアウトに後からウィジェットやレイアウトを
入れるような GUI 操作をできるようにしたもの。アイコンが同じで、名前も
同じになっているので、ツールバーのレイアウトアイコンとの違いが、一目で
は分からないので、初めてだとはまりやすい。
0656644
2009/12/02(水) 15:39:30翻訳して印刷して、
”centerWidgetsに貼ったframe”をメニューのLayoutで、
frame自体のLayoutを設定してやれば中のコンポーネントがちゃんとレイアウトマネージャ動作しました。
このUI操作ってちょっと反則ですよね?
frameがLayoutを持ってるってのは予想外だったけど便利かもしれない。
frameの中のレイアウトマネージャをオフしたりできるんだもんね(?)
0657デフォルトの名無しさん
2009/12/02(水) 16:54:58ウィジェットとレイアウト機能は分離されているので、反則ではないでしょう。
Javaにもそういうのがあります。ウィジェット上に子ウィジェットを並べたければ、
レイアウト機能を付けて並べます。
QFrameということなら、QFrameにレイアウトはありません。QFrame を指定して
レイアウトオブジェクトを作るか、setLayout() でレイアウトを付けるかして、
QFrameの上に子ウィジェットを並べます。
0658644
2009/12/02(水) 17:15:28また問題発生しました。
QFrameにBoxLayoutを2つ並べて、
それぞれにボタン等を入れるとレイアウトマネージャ的な動作になりました。
しかし、片方のBoxLayoutにListViewを入れると、
もう片方のBoxLayoutが線みたく細くなってしまうんです。
原因が分からないから対処方法が分かりません(><)
0659デフォルトの名無しさん
2009/12/02(水) 17:57:42>QFrame の右クリックメニューで、Layoutメニューが出ますが???
ツールバーのレイアウトアイコンと同じ機能を呼出すだけです。
レイアウトオブジェクトが作られて、QFrameに対して作用するようなコードが
生成されるようになります。QFrameそのものには、レイアウト機能はありません。
>QFrameにBoxLayoutを2つ並べて、
>それぞれにボタン等を入れるとレイアウトマネージャ的な動作になりました。
>
>しかし、片方のBoxLayoutにListViewを入れると、
>もう片方のBoxLayoutが線みたく細くなってしまうんです。
オブジェクトインスペクタで見ると、QFrameにレイアウトが付いていないのではないですか。
QFrame内のウィジェットやレイアウトが選択されていない状態で、ツールバーのレイアウト
アイコンをクリックして、QFrameにレイアウトを付ければ、きれいに並ぶでしょう。
>原因が分からないから対処方法が分かりません(><)
オライリーの Qt 4 本を読んで、直接コードでどのようにレイアウト機能を使うかを
把握してみてはどうでしょう。
0660644
2009/12/02(水) 18:14:44QFrameに1つのVBoxLayoutを貼って、
その中にGroupBoxとListViewを貼ってみました。
ツリーで確認してVBoxLayoutの中にそれら2つのコンポがあります。
しかし、ListViewが巨大になって、GroupBoxがタイトルと少しの切れ端みたいな感じで小さくなります。
Java/Swingなんかだったら、1対1で領域取ってくれると思うのですが、なんで上手くいかないのかなあ。。。
0661デフォルトの名無しさん
2009/12/02(水) 18:26:400662デフォルトの名無しさん
2009/12/02(水) 18:29:38処理に依存します。例えば、QLineEditはのサブクラスなら、mousePressEvent() を呼出
しをしないと、マウス操作に反応しなくなります。timerEvent()なら、大抵は親クラス
は何もしいないから、したいことを処理すればよいだけでしょう。
0663デフォルトの名無しさん
2009/12/02(水) 18:36:500664デフォルトの名無しさん
2009/12/02(水) 18:38:160665644
2009/12/02(水) 18:42:36layoutStretchが0,0だったのを、1,1にしたらおkでした。
コントロールを一旦削除したりすると、
StretchのArrayが消えちゃうんですね(ガクブル
0667644
2009/12/02(水) 18:53:27同じようにBoxLayoutの中に、
GroupBoxとListViewの2つがあるとして、
ウィンドウサイズに応じてListViewのみを大きくしたい、
つまりGroupBoxの大きさは変えない、
みたいなことをしたいとき、どんなテクニックがありますか?
コンポーネント2つ限定ってわけじゃなくて、
ダミーのコンポーネントをペタペタ足すのはオKです。
このテクを身につければ、ウィンドウをサクサク作れそうです。
0668デフォルトの名無しさん
2009/12/02(水) 19:11:49GroupBoxのHorizontal PolicyをMinimumにして、minimumSizeのWidthを指定すればできます。
0669644
2009/12/02(水) 19:26:11Mnimum/Maxmumだとかを設定したら、出来ました。
sizePolicyってのも理解できました。(これ知らなかったらやヴぁかった)
0670デフォルトの名無しさん
2009/12/03(木) 10:43:190671デフォルトの名無しさん
2009/12/03(木) 11:04:240672デフォルトの名無しさん
2009/12/03(木) 16:43:430673デフォルトの名無しさん
2009/12/03(木) 16:47:420674デフォルトの名無しさん
2009/12/03(木) 16:50:50何、対応してないの?
MacでQt使用中なのでiPhonアプリ作れるかもとワクテカしてたのに。
ま、iPhoneがネイティブアプリを認めないのが悪いのか。
0675デフォルトの名無しさん
2009/12/03(木) 19:02:56http://www.qt-iphone.com/Introduction.html
0676デフォルトの名無しさん
2009/12/03(木) 19:26:50すばらしい。Objective Cを使わなくてよくなる。
0677デフォルトの名無しさん
2009/12/04(金) 08:39:00―――――――――――――‐┬┘
|
____.____ |
| | | |
| | ∧_∧ | |
| |( ´∀`)つ ミ | Objective C
| |/ ⊃ ノ | |
 ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄ | ミ
0678デフォルトの名無しさん
2009/12/04(金) 09:40:54- メニューが日本語になってる
- プロジェクトに登録してるファイルが「ヘッダ」「ソース」「フォーム」「その他」などに分類されるようになった
0679デフォルトの名無しさん
2009/12/04(金) 11:24:090680デフォルトの名無しさん
2009/12/04(金) 12:41:040681デフォルトの名無しさん
2009/12/04(金) 12:55:48あいだに
空行を
いれれば
良いんじゃないかな?
0682デフォルトの名無しさん
2009/12/04(金) 13:32:45Qtはline-heightに対応していないようです
>>681
1,2ピクセル広げたいだけなので改行では無理です
0683デフォルトの名無しさん
2009/12/04(金) 14:27:51表示内容を toHtml() なりで HTML にしたうえで、
その中で HTML の CSS で調整は可能。
margin-top とか margin-bottom とかだったかな。
もっとも、折り返しには対応してないし使えるのは限定的。
0684デフォルトの名無しさん
2009/12/04(金) 14:38:18line-heightがダメだったって言ってるしHTMLのCSSは試したんだと思うが
0685679
2009/12/04(金) 15:32:16QStyleSheetももちろん試しましたがこちらだと普通にエラーメッセージが出るので仕様みたいですね
0686デフォルトの名無しさん
2009/12/04(金) 16:42:36下記のコードで見た目行間が空いているように見せることは出来る。
実際に使う場合には<p>要素のstyleの中だけ書き換えるように
注意しないといけないけど。
textBrowser->setPlainText(text);
QString html = textBrowser.toHtml();
html.replace("margin-top:0px", "margin-top:5px");
textBrowser->setHtml(html);
0687679
2009/12/04(金) 17:10:38marginを使う方法は、私の場合ソースが任意のHTMLなので、折り返しはもちろんbrタグ等のpタグが挿入されない改行も考慮しないといけないです
0688デフォルトの名無しさん
2009/12/04(金) 17:30:04ってエラー出るんですけどそもそもインストールしたときにc:\qt-greenhouseなんてないんですけど何か間違えたかな?
0689デフォルトの名無しさん
2009/12/04(金) 17:32:13QAbstractTextDocumentLayout を継承して独自レイアウトを作るという
方法はなくはないけど、かなり面倒。
正直、Qt のソースを変更して line-height を使えるように
QTextBrowser を改造する方が楽。
状況が許すのなら QtWebKit を使う方法を検討した方がいいと思う。
あちらだと line-height も使えると思う。
0690679
2009/12/04(金) 18:13:24QtWebKitは一度出力したテキストを後から編集できないみたいなので今回は使えません
やっぱりQtのソースを弄った方が簡単ですかね
何処を見れば良いのかさっぱり分かりませんけど・・・
なんにせよどうもありがとう
0691デフォルトの名無しさん
2009/12/04(金) 18:21:07環境変数QTDIRを設定してないと
そのパスを見に行くようになってると思います
0692デフォルトの名無しさん
2009/12/04(金) 19:06:28やったことないけど
0693デフォルトの名無しさん
2009/12/04(金) 19:21:234.5のプロジェクトを4.6にアップデート後にコンパイルしたら出た?
俺の場合はMakefile消して生成し直したら通ったよ
なんか4.5のパスがMakefileに残ってたみたいだ
見当違いだったらスマン
0694デフォルトの名無しさん
2009/12/04(金) 19:24:490695デフォルトの名無しさん
2009/12/04(金) 19:37:11を呼べばQWebViewでも編集できるようにはなるね。
0696デフォルトの名無しさん
2009/12/04(金) 22:33:51http://doc.trolltech.com/4.6/accessible.html
0697デフォルトの名無しさん
2009/12/04(金) 22:44:53http://doc.trolltech.com/qq/qq24-accessibility.html
0698デフォルトの名無しさん
2009/12/04(金) 23:23:58使ってるんだけど、よく OS ごと道連れに固まる。
デバッグ起動したときとか終了したときとか。
ってな現象ほかの人で出てませんか?
いや、いたからどうってことじゃないんだけど。
0699デフォルトの名無しさん
2009/12/04(金) 23:31:02他のアプリケーションで、ハードディスクがおかしくなりかけていたときに、
そんなことがありました。
0700デフォルトの名無しさん
2009/12/05(土) 00:41:27Win7でやってるけど固まりまくるね
マルチスレッドアプリをデバッグするとOS固まるっていう事例は昔からあるけど、これはそれとは別っぽいしなあ
0701デフォルトの名無しさん
2009/12/05(土) 08:17:25Qt Creatorそのものがマルチスレッド使っているからとか。
0702デフォルトの名無しさん
2009/12/05(土) 08:18:36Qt Creatorそのものがスレッド使っているからとか。
0703デフォルトの名無しさん
2009/12/05(土) 11:04:22以後起動しなくなった。再インストールしても起動しなかったのであきらめてた。
0704デフォルトの名無しさん
2009/12/05(土) 12:57:13プロジェクトファイル等のあるフォルダを移動させたら落ちたってことはあったな。
ちょっとファイルが見つからないだけでいろいろ混乱するね。
0705698
2009/12/05(土) 15:37:051.2 の頃からだと思うんですが、例えばデバッグ終了時に固まってて
ATL + TAB でアプリの切り替えはできるようだけど、エクスプローラーも
固まってる感じで、運がいい時はタスクマネージャーで強制終了できるので
戻ってこれるときもあるんですが、たいていはそのままOSごと固まる。
Visual Studio でデバッグしてるときも、ごくごくたまに似たようなことはありますが
Qt Creator の場合ちょっと頻度が高すぎて困ってます。
linux や OS X とかでの開発の方が安定してるんですかねぇ...
0706デフォルトの名無しさん
2009/12/05(土) 16:13:16そういう不具合に遭遇したことはないね。
0707デフォルトの名無しさん
2009/12/05(土) 19:37:10>linux や OS X とかでの開発の方が安定してるんですかねぇ...
そうですね。開発もし易くて、使い易いです。
0708デフォルトの名無しさん
2009/12/05(土) 21:14:17今までC++を触ってきたのですが、GUIの作成が必要となったため、Qtに手を出しました。
恐らく質問内容はQtに限ったことではないと思うのですが、もしご教示可能でしたらよろしくおねぎします。
やりたいことは、ペイントソフトのように画像をフリーハンドで範囲指定し、
その範囲内のピクセル情報をコピーするといったことです。
フリーハンドで指定した範囲を得る方法は多様だと思いますが、定石のようなものがあれば教えていただきたいのです。
すれ違いな気がしますので、スルーしてもらってもかまいません<(_ _)>
0709デフォルトの名無しさん
2009/12/05(土) 21:31:19オライリーの Qt 4 本のP.135にあるPlotterウィジェットのサンプルがよいです。
描画したものを範囲してして切出すということをしています。
0710デフォルトの名無しさん
2009/12/06(日) 00:00:13おお!ネットでサンプル探しても、それらしいのはなかったのですが、
早速本を注文することにします!ありがとうございます!
0711デフォルトの名無しさん
2009/12/06(日) 02:49:49亀レスだがサンクス。環境変数の設定とかしないとちゃんと動かないようになってるのね。
0712デフォルトの名無しさん
2009/12/06(日) 11:11:35あのサンプルのラバーバンドで領域を切出した後に、QPainter::drawPixmap()に
切出した領域を指定して、コピーしたい先に描画すればよいです。
0713デフォルトの名無しさん
2009/12/07(月) 22:56:560714デフォルトの名無しさん
2009/12/08(火) 10:28:140715デフォルトの名無しさん
2009/12/08(火) 12:00:29ttp://journal.mycom.co.jp/articles/2009/12/07/qtdev3/index.html
0716デフォルトの名無しさん
2009/12/08(火) 12:16:17Javaなんていらんのかもしれんね。
0717デフォルトの名無しさん
2009/12/08(火) 20:31:01Qt4の本を手に入れ、>>709さんに教えていただいたページを確認してみました。
ペイント関係のことが載っており、かなり助かりそうです。
ただ、私のやりたい切り抜きというものが、フォトショなどにあるような”なげなわツール”を実現したかったのです。(言葉不足ですいません)
まだまだ勉強中なので間違った使い方をしているのかもしれませんが、一つ方法を考えてみました。
・PainterPathを使用する方法で、ドラッグ数ピクセルおきにベジエ曲線のコントロールポイントを配置し、描画(本によれば、最低限距離が4必要とのこと)し、そのコントロールポイントをパスとして登録。
・登録されたパスをsetClipPathを用いて切り抜き。
今触れない状況ですので、試してはいません。(そもそもPathやClipを勘違いしているかもしれません)
あと出来れば、パスが交差(閉じた)した時点で選択を終了したい、つまり閉じた平面は1つしか作りたくないのですが、これはかなり難しそうです。
もし、助言等いただけたらとても助かります。
0718デフォルトの名無しさん
2009/12/09(水) 03:23:53文字列入力してIME2007を使って漢字変換しようとすると落ちない?
デモに入ってるBrowserで、Google検索のテキストフィールドにたとえば「もりのなか」って打ち込んで変換しようとすると
Win7でもWinXPでも落ちるんだけど
0719デフォルトの名無しさん
2009/12/09(水) 17:44:450720デフォルトの名無しさん
2009/12/09(水) 22:07:29OSは。
0721デフォルトの名無しさん
2009/12/09(水) 22:17:53参考までにお使いのグラボを教えて下さい
0722698
2009/12/10(木) 03:39:014.6.0-rc1 の VC2008版だけど(自分でビルドしてない)、
そのデモブラウザ起動して、Google の検索窓で、Google IME で変換しても落ちない。
Microsoft IME Standard 2002 ver. 8.1 だと落ちた。
0723デフォルトの名無しさん
2009/12/10(木) 08:49:270724718
2009/12/10(木) 21:37:37安定するまで待つことにするよ。俺のスキルじゃ原因究明はできそうにないし
0725デフォルトの名無しさん
2009/12/12(土) 04:49:08qtには含まれていない⁈
何をしたいかというと、chromeかwebkitを基に綺麗な日本語が表示できるブラウザがwindowsで欲しい
そもそも需要ないですかね?
0726デフォルトの名無しさん
2009/12/12(土) 20:04:30KDEというより、X11が綺麗なのです。
Windowsでfreetypeを使うという方法があって、とても綺麗になります。
MSそのままの日本語のWindowsは、あんなにとてつもなく汚さを極めた日本語フォントレンダリングなのに、
文句を言わな過ぎるのではないですか。
0727708
2009/12/14(月) 00:56:48助言をいただいたこともあり報告にきました<(_ _)>
結局、方法は以下の様になりました。
まず、ペイントペンのように画像をなぞると、その座標を中心としたQRectを作成します。
そのQRectを使用してQPainterPathにaddRectし、パスとしてつなげていきます。
それだけでは汚いパスなので、マウスをリリースしたらsimplifiedで外郭のみのパスにします。
その後、パスのBoundaryRectサイズのQLabelを作成し、その部分の画素をコピー(QPixmapへ)します。
それだけでは、ただ長方形範囲の画素をコピーしただけなので、コピーしたQPixmapをラスタースキャンし、
注目点が上で生成したパスの範囲内か範囲外かを判定し、範囲内ならそのまま、外なら白く塗りつぶすようにしました。
(本当はアルファチャネルを用いて透明にしたかったのですが、setPixelではなぜかできませんでした。)
あとはそのPixmapをLabelに貼り付けるだけです。
まだドラッグ&ドロップ部分が出来てない(Labelをプールするウィンドウを作りたい)ので頑張って作成します。
0728デフォルトの名無しさん
2009/12/16(水) 16:13:15QtCreatorのコードエディタで、時々コピペができなくなる
コピーはできても、ペイストができなくなります。
QtCreatorを立ち上げなおすと復旧するんだけど
なにか対処法はない?
0729デフォルトの名無しさん
2009/12/17(木) 09:48:33うちもUMPCに入れてるubuntuだとQtアプリに時々入力が出来なくなるよ。
0730デフォルトの名無しさん
2009/12/18(金) 21:03:08以前のQt解説本はQt4では一部通用しない箇所があるとうかがったのですが
具体的にはどんな部分でしょうか?
そんなにQtで高度なアプリを組む予定は無いんですがそれでもQt4での変更箇所は
影響したりしますか?本を買い直すべきか迷っています。
0731デフォルトの名無しさん
2009/12/18(金) 22:43:21http://doc.trolltech.com/4.6/porting4.html
古い本を参考にしているなら、QHBoxの変更とか結構面倒。
http://doc.trolltech.com/4.5/porting4.html#qhbox
KDEを使っているなら、DCOPがQDBusに変わったことも影響が大きい。
今から解説本を、Qt3からQt4に書き換えつつ読むと、手間含めて倍以上かかると思う。
Qt3の解説本は読むだけにして、Qt4のチュートリアルやるとか。
Qt4の解説本を買い直してやる良いんじゃないかな。
0732デフォルトの名無しさん
2009/12/18(金) 22:49:56本買い直してきます・・・
0733デフォルトの名無しさん
2009/12/19(土) 18:43:39今度そいつをGUI化しようと思ってるんだけど、Qtに上記のソースコードをまんま移植して
GUI化することって可能だと思う?
それともいったんC++に書き換えた上でQtでGUIを構築する必要があるかな?
0734デフォルトの名無しさん
2009/12/19(土) 22:01:210735デフォルトの名無しさん
2009/12/19(土) 22:19:520736デフォルトの名無しさん
2009/12/19(土) 23:30:370737デフォルトの名無しさん
2009/12/20(日) 00:07:46QtがC++ベースで記述されてることを考えればGUI周り以外もC++で統一するのが筋じゃない?
0738デフォルトの名無しさん
2009/12/20(日) 13:15:59C++/CLI経由してC#で作った部分の機能を使えばいいんでないかい。
0739デフォルトの名無しさん
2009/12/20(日) 13:20:040740デフォルトの名無しさん
2009/12/20(日) 16:19:54http://freshmeat.net/projects/qtcsharp
C#で書いたけどもリナックスでも動かしたい人のためのものなのかな
でもQtがLGPLなのにQt#がGPLだよ
0741デフォルトの名無しさん
2009/12/20(日) 16:52:48難しいorz・・・
C++/CLI上でC#を使うなんてこと可能なの?
0742デフォルトの名無しさん
2009/12/20(日) 18:04:26弄ってます。
試しにVBで言うところのListViewコンポーネントのDetailsと同じことをQtでも使ってみようと
APIリファレンスを参照すると、QListViewクラスってのがあったのですが、このクラスにはカラム
ヘッダの追加をするような関数が見当たらなかったんですが、QtでListViewコンポーネントの
Detailsと同じような機能が簡単に使えるクラスってあるんでしょうか?
0743デフォルトの名無しさん
2009/12/20(日) 18:06:27QSettingsのbeginWriteArreyのサンプル例
settings.setValue("userName", list.at(i).userName);って
settings.setValue("userName", logins.at(i).userName);の間違いよね
0744デフォルトの名無しさん
2009/12/20(日) 21:18:22C++/CLIはC/C++とC#の橋渡し用言語。これ以上は該当スレなどでどうぞ。
>>742
QListViewは常に1カラム。
複数カラムのリストを作りたいなら自作するかQTreeViewを使うといいと思うよ。
0745デフォルトの名無しさん
2009/12/20(日) 21:49:38それはまるよなぁ。
Qtに含まれているサンプルをみれば
こういう場合は、何を使っているかわかるから
参考にしたほうがいいよ。
0746デフォルトの名無しさん
2009/12/20(日) 22:14:13> C++/CLIはC/C++とC#の橋渡し用言語。これ以上は該当スレなどでどうぞ。
Qt使いさんがC#でコアコードを書くときって(頻繁にあるのかどうかは知らんが)
C++/CLIという言語をバイパスに使うのはよくあること?
0747デフォルトの名無しさん
2009/12/20(日) 22:17:43> それはまるよなぁ。
そうそう。QListViewはWindowsで言ういわゆるListViewとは全然別物だからね。
どっちかって言うと、ListBoxに近い。
>>744
>複数カラムのリストを作りたいなら自作するかQTreeViewを使うといいと思うよ。
QTableViewかQTableWidgetでしょ?
0748デフォルトの名無しさん
2009/12/20(日) 22:53:40C++-GUI-Programming-with-Qt-4-1st-ed.pdf
というQtに関する解説本が公開されているわけだけど
いかんせんPDFというファイル形式のため気軽に該当する箇所を見るという使い方には向いてない。
(PDFっつ〜と印刷してじっくり読むのが向いてるしね)
というわけで上記の解説本をPDFではなく、HTMLで公開しているサイトって無い?
目次でチャプターやセクションをクリックすると瞬時にそのページに飛べたりすると助かる。
0749デフォルトの名無しさん
2009/12/20(日) 22:55:16ウィンドウズのリストをイメージするならTable系よりTree系のが近いと思うんだけど。
0750デフォルトの名無しさん
2009/12/21(月) 01:39:06名前から違うものに感じるけどTreeのほうがあっていると思う。
QTreeViewでツリー表示をしない使い方が
Windowsで一般的に言うリストビューに近い。
QTreeViewは名前からエクスプローラの左のツリー部分を
思い浮かべるかもしれないけどそれとも違う所に注意。
もしQtでエクスプローラを作るとしたら、左も右もQTreeViewを使うかな。
両方の機能を合わせたものがQTreeView。
0752742
2009/12/21(月) 09:45:30なるほど、QTreeViewやQTableViewのリファレンスとサンプルを参照してみます。
ありがとうございました。
0753デフォルトの名無しさん
2009/12/21(月) 17:10:18QtがMSVCR90.dllに依存してしまいますよね?
これどう解決してますか?
私がやった方法は、
C:\Qt\2009.05\qt\mkspecs\win32-msvc2008\qmake.conf
の-MDと-MDdをそれぞれ-MT、-MTdに変更する方法なのですが、
これやるとQtデザイナは動かなくなるし、自作ソフトはいろんなところで
落ちるようになるし、つかえたもんじゃないです。
解決されてるかたいませんか?
0754デフォルトの名無しさん
2009/12/21(月) 17:52:05Qtの標準機能でインストーラが作れたりするんでしょうか?
Dependency Walkerで依存DLLを調べて、QtがインストールされていないPCに関連ファイルをコピーして実行しても
「プロシージャエントリポイント _xxxxRegisterResourceDataxxxx_ がダイナミックリンクライブラリ QtCore4.dll から
見つかりませんでした。」とか言われて困ってます。
0755デフォルトの名無しさん
2009/12/21(月) 23:51:10mingwm10.dll
QtGui4.dll
QtCore4.dll
を同梱すれば動くよ。
でも公衆配信するつもりなら、ライセンスはきちんと読もうね。
LGPLだとqtのソース提供が必要だよ。
0756デフォルトの名無しさん
2009/12/22(火) 00:27:17L なんだからいらんだろ
0757デフォルトの名無しさん
2009/12/22(火) 01:20:040758デフォルトの名無しさん
2009/12/22(火) 01:29:50標準ではないけど、公式でこんなのが配られてる。
http://qt.nokia.com/products/appdev/add-on-products/catalog/4/Widgets/qtpropertybrowser/
他にもQt-Apps.orgにライセンスは覚えてないけど二つくらい登録されてたはず。
0759デフォルトの名無しさん
2009/12/23(水) 01:52:22アプリケーションのソースコードは渡さなくてよいけれど、
アプリケーションを受け取った人から、使ったQtのソースコードを要求されたら、
そのQtのソースコードを配布しなければならないと、LGPLで決められている。
0760デフォルトの名無しさん
2009/12/23(水) 02:56:02微妙に変わったのか、記憶違いか…
ソースコード要求されたら、アプリの配布主が必ずしも配布する必要はなくて、
なんらかのアクセスできる手段を提供すればいいんじゃなかった?
Qtなら公式サイトへのリンクを示して、「ここにあんぜ」で済むような。
あとは実費の請求もOKだったかな。「CD-ROM送るから、メディア代と送料は
そっち負担でよろしく」も大丈夫だったかな。
ふと思ったんだが、「うちはアナログモデムで1200bpsでつないだ鯖にしか
置いてないよ」ってのはかなりの嫌がらせになるな。
0761デフォルトの名無しさん
2009/12/23(水) 03:46:250762デフォルトの名無しさん
2009/12/23(水) 03:50:270763デフォルトの名無しさん
2009/12/23(水) 08:26:22・・・でも
「もし公式サイトが閉鎖したらその瞬間から
公式サイトへのリンクを示しているのが無効になるわけだから、
Qtのソースコードを手元に残しておいて
それを自分で配布しなければならない」
って事にはなりそうだと思うぞ。
0764デフォルトの名無しさん
2009/12/23(水) 08:33:07リンクは無効になるわけだけどな。
0765デフォルトの名無しさん
2009/12/23(水) 10:27:09ありがとう
0766デフォルトの名無しさん
2009/12/23(水) 12:20:16新しいファイルを追加>Qt デザインファイルクラス>WidgetでForm1クラスとForm2クラスを作り
mainwindowにメンバー変数form1, form2を作り
mainwindowのコンストラクタで
QSplitter splitter(Qt::Horizontal);
splitter.addWidget(&form1);
splitter.addWidget(&form2);
splitter.setStretchFactor(1,1);
setCentralWidget(&splitter);
として見たんですが、ビルドは通って、実効すると突然終了します。
何が問題でしょうか?
0767デフォルトの名無しさん
2009/12/23(水) 13:00:35確かに!!
じゃあやっぱりもうバイナリに合わせてソースを一緒にバンドルするのが
一番良いってことじゃないか!
0768デフォルトの名無しさん
2009/12/23(水) 13:03:12スコープ内のsplitter使ってるからじゃない?
ヘッダで
QSplitter *spliter;
mainwindowのコンストラクタで
splitter = new QSplitter(Qt::Horizontal);
splitter->addWidget(&form1);
splitter->addWidget(&form2);
splitter->setStretchFactor(1,1);
setCentralWidget(splitter);
0769768
2009/12/23(水) 13:07:46QSplitter *splitter;
ね
0770デフォルトの名無しさん
2009/12/23(水) 15:35:36Qtのフォルダに移動して、
set QMAKESPEC=win32-msvc2008
configure -debug-and-release -D _CRT_SECURE_NO
nmake
とすると、QtWebKitd4.dllでリンクエラーが出るんだけどどうすればいい?
なおbinフォルダにパスは通し済み。
0771デフォルトの名無しさん
2009/12/23(水) 16:27:30SDKじゃなくて、QtとQt Creatorをバラバラにダウンロードすれば、VS 2008で使えるバイナリが
置いてあるのに。
0772デフォルトの名無しさん
2009/12/23(水) 17:04:38色々入ってそうだからとりあえずSDKをダウンロードしてみたんだが、そういうわけじゃないのね。
情報�d
0774デフォルトの名無しさん
2009/12/23(水) 17:21:01日本語で頼む
0775デフォルトの名無しさん
2009/12/23(水) 18:59:43ダウンロードのページを見れば意味がわかる。
聞いた人本人が理解してるんだから余計なチャチャ入れるな。
0776デフォルトの名無しさん
2009/12/23(水) 19:13:43ああ、悪かったな(´・ω・`)
0777デフォルトの名無しさん
2009/12/24(木) 09:17:10根本解決じゃないけど、-no-webkitを付ければいいよ。
>>771
SDKでもVS2008で使えるバイナリは付いてるよね?
付いてるんだけど、どちらもMinGW用で、Win用の外部ライブラリ(ハードウェア制御とか)なんか
を使おうとするとMinGWではコンパイル出来ないから、自力コンパイルする必要がある。
0778デフォルトの名無しさん
2009/12/24(木) 09:20:23※api\qscriptextensionplugin.h(43): Error: Undefined interface
みたいなエラーでるので
\src\script\tmp\moc\debug_shared\mocinclude.tmp
\src\script\tmp\moc\release_shared\mocinclude.tmp
をあらかじめ削除しておく必要があるみたい。
この二つのファイルは、SDKに付属のものだけど、
これが邪魔してコンパイルエラーになる模様。
0779デフォルトの名無しさん
2009/12/24(木) 12:38:42> SDKでもVS2008で使えるバイナリは付いてるよね?
ダウンロードページにはっきり「MinGW版のみのため、VSコンパイラはサポートしていません」
って書いてあるけど?
> 付いてるんだけど、どちらもMinGW用で、Win用の外部ライブラリ(ハードウェア制御とか)なんか
> を使おうとするとMinGWではコンパイル出来ないから、自力コンパイルする必要がある。
意味不明。
だからさぁ,SDKじゃなくて,ダウンロードページの右側の「フレームワークのみ」の「Windows版Qt
ライブラリ4.5のダウンロード (VS 2008, 190 Mb)」と(4.5って書いてあるけど4.6の間違い)と,左下の
「Qt Creator IDE」の「Windows版Qt Creator 1.3.0バイナリのダウンロード (40Mb)」をダウンロードして
インストールすればいいじゃない。
Qt CreatorはMinGWもVS2008も共通で使える。俺はMinGWとVC++ 2008(実際にはWindows SDK
for Windows 7)をQt Creatorで切り替えて使ってるよ。
0780デフォルトの名無しさん
2009/12/24(木) 12:42:03もしかしてバイナリとソースコードの違いがわかってないなんてことは...まさかね。
0781sage
2009/12/24(木) 16:20:160782デフォルトの名無しさん
2009/12/25(金) 02:58:19エディタのエンコーディングがUTF-8なら↓で普通に日本語でますね
#include <QTextCodec>
#include <QDebug>
int main(int argc, char *argv[])
{
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8"));
qDebug() << "あいうえお";
QApplication a(argc, argv);
...
}
0783デフォルトの名無しさん
2009/12/25(金) 11:21:54申し訳ない、777はめちゃくちゃだった。
言いたかったことは、自作ソフトのWindowsバイナリは、
SDK付属のMinGWのバイナリからもつくれるけど、
Win用の商用の外部ライブラリ(ハードウェア制御とか)なんか
を使おうとするとMinGWではリンクエラーになる場合があるから、
本格的にQt使うつもりならVSコンパイラでQTの再コンパイルが必要になるってこと。
0784デフォルトの名無しさん
2009/12/25(金) 13:21:18最新のコンパイラならそこまで細工はいらない?
限定的だけどMinGWとLinuxGCCの最新版で考えたとき、同じソースが殆どの場合で通る?
聞いてばっかりですんませんけど試された方教えて下さい。
0785デフォルトの名無しさん
2009/12/25(金) 13:39:37MinGW も Linux も gcc なのでコンパイラによる切り替えはあまりいらない。
Visual Studio との切り替えなら場合によってはいるかもしれないけど、
多くの場合は必要ない。
コンパイラよりもOSなどによる場合わけのほうがまだ使う。
けど、細かいところまでこだわらなければしなくても結構問題ない。
そこそこ規模の大きいアプリだとビルドシステム周りの場合わけのほうが面倒。
shared なライブラリとか plugin を作るようなものだと特に。
Qt Creator のソースがクロスプラットフォームアプリのいいサンプルだから見てみるといい。
ソースだと Q_OS_* とか Q_WS_* でプラットフォームを切り替えている。
0786779
2009/12/25(金) 14:45:16VSコンパイラでコンパイルされたQt4.6ライブラリのバイナリがダウンロードできるんだから,
それを使えばいいじゃない。何か問題あるの?
SDKインストールしちゃったんなら,アンインストールして,「フレームワークのみ」のQt4.6
のMinGW版とVS2008版を別のディレクトリにインストールし,Qt Creatorも単独のものを
インストールすれば問題ないはず。MinGW自体も一緒にインストールできるよ。
0787779
2009/12/25(金) 14:53:33VS2008版のバイナリライブラリを別のディレクトリにインストールすればいいだけのはず。
あとQt CreatorでMinGW版使うか,VS2008版使うか,プロジェクト毎に切り替えられる。
ちょっと表示にバグがあるけど,動作は大丈夫。
0788デフォルトの名無しさん
2009/12/25(金) 14:59:490789デフォルトの名無しさん
2009/12/25(金) 16:33:05せっかくQtを使うのにWindowsに限定して解説しているサイトは
少なそうな気がするんだけど。
単純に日本語サイトなら↓とか。
Qt4例題を順番にやってから、Qt4ノートで癖を掴む感じでいけるかと。
Qt Programming
http://calmlight.s2.zmx.jp/index.html
0790デフォルトの名無しさん
2009/12/25(金) 17:13:12同じことが起こる人他にいる?
環境は OSがWindowsXP、QtのVersionは4.6(VSコンパイラでリビルドしたもの)
0791デフォルトの名無しさん
2009/12/25(金) 17:33:18Windowsだけなら、
http://www.off-soft.net/ja/develop/qt.html
0792デフォルトの名無しさん
2009/12/25(金) 23:34:21別のアイコンに変更するにはどうしたらいいんでしょうか?
使ってるQtは4.5、OSはWindows XPです。
0793デフォルトの名無しさん
2009/12/25(金) 23:52:13icon画像をpushButtonのサイズに自動的に合わせることってできますか?
VBだとPictureBoxのSizeModeをStretchImageに設定すると、自動的に
サイズ調整してくれますが、QtCreatorでも同じことができるといいんですが。
0794デフォルトの名無しさん
2009/12/26(土) 01:17:41void QWidget::setWindowIcon( const QIcon & icon )
0795デフォルトの名無しさん
2009/12/26(土) 10:16:28エスパーすると、ウィンドウの左上に表示されるアイコンのことじゃなくて、
エクスプローラーで表示されるアプリケーションアイコンのことだと思われ。
その場合、>>794 の方法ではダメで、以下のようにするんだそうだ。
つ ttp://qt.nokia.com/doc/4.6/appicon.html
.ico ファイルと .rc ファイルを作る必要があるのでチト面倒。
0796792
2009/12/26(土) 10:21:34すみません、紛らわしい質問文だったようです。
ファイルアイコンと表現したのは、実行ファイル(exe)のアイコンのことで、
SkypeとかのQtアプリのように、実行ファイルのアイコンを自作アイコンに
変更したくて質問しました。
0800783
2009/12/26(土) 15:28:45インストールしてみたら、libフォルダにはDLLが一つもなかった。
これってスタティックリンク版だね。LGPLには使えない。
WindowsでQt使う人は、ほとんどがLGPLで使いたいだろうから、
このバイナリはほとんど役にたたないかも。
やっぱり再コンパイルしないといけなそう。
0801786
2009/12/26(土) 16:42:58少しもちつけ。binフォルダにある。DLLなんだからlibフォルダじゃなくてbinフォルダにあって
当然だろ。
0802デフォルトの名無しさん
2009/12/26(土) 16:43:540803デフォルトの名無しさん
2009/12/26(土) 19:46:45ヘルプのExsampleの
x.lastIndexOf(y,5)はどこから数えて6になるの?
0804デフォルトの名無しさん
2009/12/26(土) 20:24:20crazy azimuths
0805デフォルトの名無しさん
2009/12/26(土) 20:33:41crazy azimuthsからazをlastIndexOfで探すサンプル。
通常は対象になる文字列の末尾から探すが、
fromを指定すると、その範囲内から探そうとする。
その位置を文字 '|' で示すとすると、
6の時は、crazy |azimuths
5の時は、crazy| azimuths
1の時は、c|razy azimuths
'|'の直後に探す文字があったらそこがhit
なかったら先頭の方向へずらしていく(fromが0になるまでデクリメント)
って感じじゃないだろうか?
0806804
2009/12/26(土) 22:53:395の時は、crazy| azimuths //returns 2になってて
こちらは2になると思う
6の時は、crazy |azimuths //returns 6になってるけど
3になりそうな
0807804
2009/12/26(土) 22:57:527になりそうに思うんですが
0808デフォルトの名無しさん
2009/12/26(土) 23:39:230809デフォルトの名無しさん
2009/12/27(日) 00:33:58なりそう、思う じゃなくて、ちゃんと試した?
#include <QApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
QString x = "crazy azimuths";
QString y = "az";
for(int i=0; i<x.length(); i++)
qDebug("x.lastIndexOf(y,%d): %d",i, x.lastIndexOf(y,i)); // returns 6
return 0;
}
/*
x.lastIndexOf(y,0): -1
x.lastIndexOf(y,1): -1
x.lastIndexOf(y,2): 2
x.lastIndexOf(y,3): 2
x.lastIndexOf(y,4): 2
x.lastIndexOf(y,5): 2
x.lastIndexOf(y,6): 6
x.lastIndexOf(y,7): 6
x.lastIndexOf(y,8): 6
x.lastIndexOf(y,9): 6
x.lastIndexOf(y,10): 6
x.lastIndexOf(y,11): 6
x.lastIndexOf(y,12): 6
x.lastIndexOf(y,13): 6
*/
0810803
2009/12/27(日) 09:43:22ありがとうございました。
0811デフォルトの名無しさん
2009/12/27(日) 14:41:00第二引数としてfrom値を指定しない場合は、最後尾からの探索をする。
むしろ、from値を指定するほうが稀だと思う。
0812783
2009/12/28(月) 11:18:07あれ、ほんとだ。DLLってbin扱いなんだね?知らなかった。あわてすぎ反省。
ちなみにMSVCR90.dll依存してるかみたら、してた。残念。
本家でも依存しないようには出来なかったのかな。
0813デフォルトの名無しさん
2009/12/28(月) 22:58:32自前でビルドしようとしても寝て起きたらエラーで止まっちゃってたりするんですが・・・
0814デフォルトの名無しさん
2009/12/29(火) 07:56:11SDKの方をダウンロードしてコンパイルしようとしてない?
フレームワークの方でもっかいやってみ?
0815デフォルトの名無しさん
2009/12/29(火) 19:48:10ファイル入出力クラスはないよね
0816デフォルトの名無しさん
2009/12/29(火) 20:28:030817801
2009/12/29(火) 21:13:41> あれ、ほんとだ。DLLってbin扱いなんだね?知らなかった。あわてすぎ反省。
自分でビルドすると、DLLはlibフォルダに作られてbinフォルダコピーされる。
libフォルダにあれば配布する時に探しやすいけど、それ以外の意味はないので
ダウンロードパッケージでは容量節約のため削除したんだと思う。
ちなみにlibフォルダにある .lib ファイルはスタティックライブラリじゃなくて
DLLのインポートライブラリ。
> ちなみにMSVCR90.dll依存してるかみたら、してた。残念。
> 本家でも依存しないようには出来なかったのかな。
俺はQt以外でVCのコンパイラ使わないので良く知らないんだけど、
VCのランタイムDLL使わないスタティックリンクができるんなら可能
なんじゃない?
ただファイルサイズが肥大化するんで避けたんだと思う。
0819813
2009/12/30(水) 17:17:55>>814
改めてフレームワークのほうをインストールして、
configure -debug-and-release -static
nmake
とやって1日近く放置してみたのですが、やっぱりエラーがでます・・・
NMAKE : fatal error U1077: '"c:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\cl.EXE"' : リターン コード '0x2'
Stop.
NMAKE : fatal error U1077: '"c:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\nmake.exe"' : リターン コード '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : リターン コード '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : リターン コード '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : リターン コード '0x2'
Stop.
で、ふと思ったのですが、どこでエラーが発生したか、などのログファイルってどこかにないのでしょうか・・・?
0820デフォルトの名無しさん
2009/12/31(木) 06:54:34> で、ふと思ったのですが、どこでエラーが発生したか、などのログファイルってどこかにないのでしょうか・・・?
多分コンソール画面上に表示されるものがすべてだと思うけど...
で、
1.DLLのビルドならうまく行くの?
2.VCのコマンドシェル(スタートメニューから辿って行って、VCの下にあるやつ)
で作業してるよね?普通のコマンドプロンプトからだと、足りない環境変数が
あるかも。
3.いっそのこと、ソースパッケージからビルドしてみたら?
ttp://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.0.zip
参考にはならないと思うけど、俺はTDM's MinGWでこのソースコードから
DLLのビルドには成功したよ。
4.関係ないと思うけど、configure のコマンドラインオプションに、
-platform win32-msvc2008 を追加してみたら?
msvc関連の platform 指定は、
win32-msvc
win32-msvc2003
win32-msvc2005
win32-msvc2008
win32-msvc.net
と、いろいろあるので...
思いつくのはこんなものかなぁ。
0821820
2009/12/31(木) 12:49:04朝から大掃除しながらPCぶん回して、確かに同様のエラーで止まるのを確認した。
やったのは、>>820に書いたソースコードパッケージから、-platform win32-msvc2008
を指定してのビルド。QtCLucened.libのビルド中に止まるみたい。
Bug Trackerに報告するしかないんじゃない?
つーか、そもそもどうしてスタティック・ライブラリが必要なの?
0822デフォルトの名無しさん
2009/12/31(木) 14:39:12大晦日って大掃除するもんだっけ?('A` )b
0823デフォルトの名無しさん
2009/12/31(木) 17:59:290825デフォルトの名無しさん
2010/01/01(金) 20:03:04これ使っちゃうとKDE上でしか動かなくなっちゃうの?
0826デフォルトの名無しさん
2010/01/02(土) 22:32:100827デフォルトの名無しさん
2010/01/03(日) 10:19:570828デフォルトの名無しさん
2010/01/03(日) 19:31:27別ウィンドウにも表示できないよね?
0829デフォルトの名無しさん
2010/01/04(月) 21:35:05STLport使ってるっしょ?
...\src\3rdparty\clucene\src\CLucene\config\CompilerMsvc.hの25行辺りの条件を変えれば通るようになる
0830デフォルトの名無しさん
2010/01/05(火) 15:15:54ctrl+R押すとredoになっちゃう
0831デフォルトの名無しさん
2010/01/05(火) 15:28:030832デフォルトの名無しさん
2010/01/05(火) 15:45:000833デフォルトの名無しさん
2010/01/05(火) 21:54:57使えますよ。
0834デフォルトの名無しさん
2010/01/08(金) 15:45:35例えばボタン押したら、Hello Worldって書かれたダイアログを出す関数を呼び出すようにしたいんだけど…
0835デフォルトの名無しさん
2010/01/08(金) 16:53:55Qt Designerは使ってないから知らないけど,Qt Creator使えば簡単ににできるよ。
ボタン右クリックして[Go to slot]を選び,シグナルを選択すると,スロット関数のスケルトンが
作られて,エディタ上でそこにカーソルが移動する。
この場合,ui_mainwindow.h(MainWindowと言う名前でメインウィンドウ作ったとして)の中に,
QMetaObject::connectSlotsByName(MainWindow);
という記述が作られて,ウィジット名とシグナル名をつないだ名前のスロット関数に
シグナルが自動的に接続される。
もちろん自前のスロット関数を手書きで書いて,connectでシグナルとつないでも
できるけど。
0836デフォルトの名無しさん
2010/01/08(金) 17:20:34Qt DesignerではなくQt Creatorか、手動でシグナルつなげばいいのね。
情報�d
0837デフォルトの名無しさん
2010/01/10(日) 09:38:05スペニックを貼り付けを開いて、説明、コメントを入力
コードペースターに送る部品が not a diffがチェックで
貼り付けを押しても、ポスト中にエラーが発生しました のエラーになります。
どのようにすればよいでしょうか?
0838デフォルトの名無しさん
2010/01/13(水) 13:18:53使ったことによるデメリットってある?
0839デフォルトの名無しさん
2010/01/14(木) 00:22:160840デフォルトの名無しさん
2010/01/14(木) 07:44:59Qt Creatorで使うつもりのないクラス/メソッドが補完候補に出る。
こんなものじゃないかな。
0841デフォルトの名無しさん
2010/01/14(木) 12:46:03オフィシャルでプラットフォーム非依存なシリアルアクセスクラスを探したんですが見つかりませんでした。
プラットフォーム依存APIを使った実装しか現状無理なのでしょうかね。
0842838
2010/01/14(木) 13:26:12>> 840
ありがとう。
使った場合と使わない場合で実行ファイルのサイズも変わらなかったし( Debugだと増えたけど )、
バリバリ使うことにするよ。
0843デフォルトの名無しさん
2010/01/14(木) 13:50:17何でもかんでもインポートすると、どっちを使ってるのかわからなくなるという問題があったような
つまり、同名クラスがあったときに取り違える可能性があるってこと。
0844デフォルトの名無しさん
2010/01/14(木) 14:12:04いっぺんに二つともインポートしようとしなければ、単にTimerで問題無いよ。
フル修飾名で書けば、同時にどっちも使えるし。
まあ、スレ違いだけど。
0845デフォルトの名無しさん
2010/01/14(木) 16:27:57公式なものはない。
少し古いがこちらが定番だと思う。
ttp://qextserialport.sourceforge.net/
0847デフォルトの名無しさん
2010/01/17(日) 22:11:47せっかくなのでと思ってクロスプラットフォームのライブラリを探すとなかなかみつかりません。
0848デフォルトの名無しさん
2010/01/17(日) 22:28:23/* は緑色
/*! は青色になるみたいで、便利なんだけど
これって、単純に色が変わるだけなの?
0849デフォルトの名無しさん
2010/01/17(日) 23:10:150850デフォルトの名無しさん
2010/01/17(日) 23:16:31Doxygen
http://www.doxygen.jp/
Let’s use doxygen!
http://www.fides.dti.ne.jp/~oka-t/doxygen.html
0851デフォルトの名無しさん
2010/01/17(日) 23:37:07Qwt はどう?
ttp://qwt.sourceforge.net/
0852デフォルトの名無しさん
2010/01/18(月) 03:30:390854デフォルトの名無しさん
2010/01/18(月) 19:16:220855デフォルトの名無しさん
2010/01/18(月) 19:52:280856デフォルトの名無しさん
2010/01/18(月) 20:53:34詳細は WAVE DASH 辺りでぐぐれ。
0857デフォルトの名無しさん
2010/01/18(月) 22:17:180858854
2010/01/18(月) 22:36:40ありがとうございました
0859854
2010/01/18(月) 23:13:07対処できてませんでした
0860854
2010/01/18(月) 23:24:33ごめんなさい
0861853
2010/01/19(火) 14:36:14雛形的なものを登録しておいて、貼り付けることは出来ないでしょうか?
毎回 /*! ************ とか打つのは面倒なもんで
0862デフォルトの名無しさん
2010/01/19(火) 14:54:57俺は判断必要としない定型文は全部Charu3で貼り付けてる。
0863デフォルトの名無しさん
2010/01/19(火) 15:46:30Windowsならこんなのもあるよ。使ってみたら完全ではないけど結構使えた。
つ ttp://www.kdc-shibuya.co.jp/freesoft.php
あとは>>862が紹介してくれてるような定型文ペーストツールはいろいろある。
0864861
2010/01/19(火) 16:06:42了解しました。
ありがとう
0865デフォルトの名無しさん
2010/01/19(火) 16:35:10Eclipseとかemacsならプラグイン(elisp)ありそうだな。
0866デフォルトの名無しさん
2010/01/19(火) 21:06:180867デフォルトの名無しさん
2010/01/19(火) 21:19:340868デフォルトの名無しさん
2010/01/19(火) 21:42:43ttp://qt.nokia.com/developer/eclipse-integration
0869デフォルトの名無しさん
2010/01/20(水) 12:28:040870デフォルトの名無しさん
2010/01/20(水) 18:15:29Symbian^4 からQtがネイティブのUIになると言ってる。
製品として出るのは2011年かな。
ttp://developer.symbian.org/wiki/index.php/Roadmap_for_the_Symbian_Platform
0871デフォルトの名無しさん
2010/01/20(水) 20:37:310872デフォルトの名無しさん
2010/01/20(水) 20:48:47なんでLinuxとWindowsのクロスプラットフォームなアプリがふえないわけ?
0873デフォルトの名無しさん
2010/01/20(水) 21:01:35QMAKE_CXXFLAGS += -std=c++0x
0874デフォルトの名無しさん
2010/01/20(水) 21:06:57これで何とかコンパイルが通りそうです。
0875デフォルトの名無しさん
2010/01/20(水) 21:27:16Qt Creatorの64bitは、gitから持ってきて自分でビルドするしかないのかな?
またはバイナリ配布されている32bitのQt Creatorから64bitのQtアプリの生成、デバッグは可能?
0876デフォルトの名無しさん
2010/01/22(金) 15:34:28不況だから。
0877デフォルトの名無しさん
2010/01/22(金) 18:02:06自分は公式で配布されているQt Creatorで64bitのアプリ生成とデバッグが出来ているよ。
0878デフォルトの名無しさん
2010/01/22(金) 18:16:570879デフォルトの名無しさん
2010/01/22(金) 19:34:54Qt CreatorってWindows版・Linux版両方ある?
0880デフォルトの名無しさん
2010/01/22(金) 22:30:30同意。
前から QuickTimeの略語とカブってて
検索しづらかったのに…
0881デフォルトの名無しさん
2010/01/23(土) 00:45:57Windows、Mac、Linux版がある
http://qt.nokia.com/downloads-jp の左下ね
0882デフォルトの名無しさん
2010/01/23(土) 00:51:41VisualStudioに統合するのとではどちらがやりやすい?
0883デフォルトの名無しさん
2010/01/23(土) 00:53:050884デフォルトの名無しさん
2010/01/23(土) 01:59:580885デフォルトの名無しさん
2010/01/23(土) 02:42:05ライセンス関係を具体的にどう対応しているのか参考にしたいのですが。
0886デフォルトの名無しさん
2010/01/23(土) 07:26:57されてるけど?
0887886
2010/01/23(土) 07:32:26書き方がちょっと間違ってた。Qt Creatorはコンパイラ非依存なので、Windows版
ならコンパイラはMinGWでもVCでも使える。設定でどのコンパイラを使うかを切り替え
できるので、同じソースで両方のコンパイラでコンパイルしてみることも可能。
VCはコマンドラインコンパイラだけが必要なので、MS SDKだけでもOK。
これなら無償だし。俺は実際、SDKとcdbだけダウンロードして使ってる。
0888デフォルトの名無しさん
2010/01/23(土) 09:19:32別に問題はないと思うが、
アプリはソース非公開にしてLGPLは別途Qtがインストールされている事が前提だから、
動作環境に「Qt4.0以上がインストールされている事」みたいな1文が入るのが難点だ。
DirectXと同じと言えば同じなのだが。
0889デフォルトの名無しさん
2010/01/23(土) 09:24:54激しく勘違いしてないか? アプリと一緒にQtのDLL(必要な分だけでいい)を配布するんだよ。
インストーラー作って、exeとdllを同じフォルダにインストールするようにするのがいい。
アプリを動作させるのに、Qtがインストールされていることを前提にする必要は全くない。
0890デフォルトの名無しさん
2010/01/23(土) 11:41:520891デフォルトの名無しさん
2010/01/23(土) 12:15:16Qtのソースコードを要求されたら、どう配布するかも明記する必要もある。
0892デフォルトの名無しさん
2010/01/23(土) 12:18:52Qtのアプリを作ってみる。(環境作成編) - forest of netBeans
http://d.hatena.ne.jp/lopes_nb/20090710/1247224480
0893デフォルトの名無しさん
2010/01/23(土) 14:00:06Eclispe
netBeans
Qt Creator
結局どれがおすすめ(´・ω・`)?
0894885
2010/01/23(土) 14:21:17そうなんだよね。自分の場合は、配布する媒体にQtのソースコードを含めるつもり。
確か、Qtのソースコードのビルドに必要なコンパイラ自体の提供は不要だけど、
makefile等のスクリプトは必要だったような。そのあたりを参考に出来る
前例があるとうれしいなと。
QtのLGPL版のサポートを購入する手もあるのかなと思うけど、
サポート受けたことある人いますか?
実際には、サポートを購入する金も無いのだけど。。。
0895デフォルトの名無しさん
2010/01/23(土) 14:34:40QT Creator
0896デフォルトの名無しさん
2010/01/23(土) 14:40:00> QtのLGPL版のサポートを購入する手もあるのかなと思うけど、
代理店はSRA?
技術的には信頼できそうだし、以前ライセンスについて質問した時の対応も
よかったけど、後でその回答よく見てみたら、LGPL V3と勘違いしている
ようだった。QtはLGPL V2.1。
V3だと、「リバースエンジニアリングを禁止してはいけない」になってるけど、
V2.1だと「リバースエンジニアリングを許可しなければならない」なんだよね。
0897デフォルトの名無しさん
2010/01/23(土) 14:40:560898デフォルトの名無しさん
2010/01/23(土) 14:43:33禁止してはいけない のと 許可しなければならない のはどう違うの?
0899デフォルトの名無しさん
2010/01/23(土) 14:56:19「許可しなければならない」だと明示的に「リバースエンジニアリングしても良い」
と書く必要があると思う。
SRAの説明では「禁止条項を設けることはできません」だった。
いずれにしろライセンシーが自分で改変したり、それをデバッグ目的でのみ
リバースエンジニアリング出来ると言うことなので、大きな障害にはならない
とは思うけど、商用アプリにとってはちょっと厳しい。
0900デフォルトの名無しさん
2010/01/23(土) 15:21:03ライセンスとか守らなくていいw
0901デフォルトの名無しさん
2010/01/23(土) 15:26:30商用だと、供給側(ライセンサー)は「守らなくていい」というわけにはいかんだろ?
0902デフォルトの名無しさん
2010/01/23(土) 15:28:10有償なら
http://www.kdab.com/index.php?option=com_content&view=article&id=55:kd-chart&catid=37:kd-chart&Itemid=65
0903デフォルトの名無しさん
2010/01/23(土) 15:35:070904デフォルトの名無しさん
2010/01/23(土) 15:39:160905デフォルトの名無しさん
2010/01/23(土) 15:40:060906デフォルトの名無しさん
2010/01/23(土) 15:42:39電卓
0907デフォルトの名無しさん
2010/01/23(土) 15:42:54V2.1で許可しなければならないという条件の元で、もし禁止条項を入れたら、
前提と矛盾するので、禁止条項を入れたらいけないとしてもいいんじゃないの。
0908デフォルトの名無しさん
2010/01/23(土) 15:50:510909デフォルトの名無しさん
2010/01/23(土) 15:51:01あればいけそうな気がする〜
あると思います
0910デフォルトの名無しさん
2010/01/23(土) 15:56:42ttp://sourceforge.jp/projects/opensource/wiki/licenses%2FGNU_Library_or_Lesser_General_Public_License
ttp://sourceforge.jp/projects/opensource/wiki/licenses%2FGNU_Lesser_General_Public_License_version_3.0
上の二つのページで「リバース」を検索してみて。何なら英語の原文で「reverse」を検索する方が確実。
原文は、
ttp://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
ttp://www.gnu.org/licenses/lgpl.html
まぁ、仕事なら会社の法務担当者に相談するのが一番。
しかしQtは何でLGPL V3じゃなくてV2.1にしたんだろ?
0911デフォルトの名無しさん
2010/01/23(土) 15:58:11どこに?
0912デフォルトの名無しさん
2010/01/23(土) 16:03:23ひとり会社なのでwwww
0913デフォルトの名無しさん
2010/01/23(土) 16:21:441.習得が容易?
2.ライブラリの量と出来とがいい?
0914デフォルトの名無しさん
2010/01/23(土) 16:34:240915デフォルトの名無しさん
2010/01/23(土) 16:35:110916デフォルトの名無しさん
2010/01/23(土) 16:53:55俺はQTのほうがわかりやすいと思う。
.NETはライブラリが充実していると思う。
0917デフォルトの名無しさん
2010/01/23(土) 17:06:130918デフォルトの名無しさん
2010/01/23(土) 17:16:19・折角C++で書くんだから、アンマネージドなプログラムを作りたい
個人的な、.NETではなくQtを使う理由
0919デフォルトの名無しさん
2010/01/23(土) 19:45:05複数のプラットフォームで動かしたいなら迷わずQt。
0920デフォルトの名無しさん
2010/01/23(土) 20:01:38.NETならC++に限らずVBでもC#でも好きな言語を選べる
0921デフォルトの名無しさん
2010/01/23(土) 20:21:560922デフォルトの名無しさん
2010/01/23(土) 21:36:04.NETは実行速度が遅くないですか。
同じようなものをQtで作った方が速度が速かった。
既存のC++クラスがあるとき、.NETでは
0923デフォルトの名無しさん
2010/01/23(土) 21:46:17自分が思う.NETとQtの比較
.NET
・ドキュメントが充実。情報が得やすい。
・派生クラスが作れないクラスがあってやりづらい(なんのためのクラス?)
・C++じゃない
・実行速度が遅い
・既存C+;クラスライブラリが使いづらい(System::Stringとstd::stringのやりとりなど面倒)
・Windowsのみ(LinuxでMonoでも動くのかもしれないが)
・RADツールが使い易い
Qt
・ドキュメントが英語で充実。情報が得づらい。(と思う)
・実行速度が速かった(.NETで同じようなものを作ったとき)
・既存クラスライブラリが使いやすい
・マルチプラットフォーム
・クラス構成が個人的に好き
・RADツールはちょっと劣るか
両方かじったが、Qtを使いたいと思っている。
.NETはネイティブC++をメインに使いたいと思うと、
できないことはないのだけど、いろいろとめんどくさい。
以上が感想。
0924デフォルトの名無しさん
2010/01/23(土) 21:56:030925デフォルトの名無しさん
2010/01/23(土) 21:59:49俺も大体同じ感想。.NETは特に初回起動が遅い。
計算も遅い。円周率1000桁計算させたら、ManagedはNativeの
約2倍かかった。
あと、せっかくANSI C++準拠のコンパイラならコンパイルできる
自作ライブラリを充実させたのに、.NETだと使えないのも.NETより
Qtを使いたい理由。
QtのRADツール Qt Creator はちょっと使いづらい面もあるが、
約一年前に初めて出たばかりなので、発展途上ということで
今後に期待。
0926913
2010/01/23(土) 23:30:36なんとなくイメージつかめた
Qt使いって基本的にC++使いなんだね、当然だけど(汗
マルチプラットフォームつながりで.netと比較したけど
そもそもVMかネイティブかっていう超えられない壁があるわけだ・・
0927デフォルトの名無しさん
2010/01/23(土) 23:30:43.netでは、お手ごろな無償のグラフライブラリが見つからなかった
0928デフォルトの名無しさん
2010/01/23(土) 23:39:20ない。Javaは採用されたがすぐに消えた。
0929デフォルトの名無しさん
2010/01/24(日) 01:05:570930デフォルトの名無しさん
2010/01/24(日) 01:09:020931デフォルトの名無しさん
2010/01/24(日) 01:44:45http://lists.kde.org/?l=kde-bindings
http://techbase.kde.org/User:Burel/smoke_api_documentation
>You pass the object straight to Smoke as a void pointer,
絶賛もっか開発中と行った趣だけど
smoke のアプローチだと perl, ruby 界隈で
情報が多そうではあるな・・・
0932デフォルトの名無しさん
2010/01/24(日) 02:32:050933デフォルトの名無しさん
2010/01/24(日) 02:33:32普通にリファレンスマニュアルとサンプルが充実しているから本は要らないと思うけど。
0934デフォルトの名無しさん
2010/01/24(日) 04:27:440935デフォルトの名無しさん
2010/01/24(日) 13:13:06書籍なら既に挙げられてる「入門Qt4プログラミング」。
サンプルのソース丸写ししながらリファレンス見てても十分参考になるけどね。
本だけじゃ説明できてない範囲も多い。
0936デフォルトの名無しさん
2010/01/24(日) 13:56:37俺も入門Qt4プログラミングで、Qtでのプログラミングの流れみたいなのを最初につかむのがいいと思う
その後はリファレンスとサンプル
0937デフォルトの名無しさん
2010/01/24(日) 14:13:57Qt アプリを使ったときに ClearType が有効になってない。
Qt 4.6 のデモで確認したんだけど、 4.6.1 では直ってる?
0938デフォルトの名無しさん
2010/01/25(月) 00:28:160939938
2010/01/25(月) 00:30:53http://www.sra.co.jp/qt/relation/index.html
の一番下にzipである。
0940デフォルトの名無しさん
2010/01/25(月) 16:07:35買って来ました
これからがんばって勉強します
0941デフォルトの名無しさん
2010/01/25(月) 16:13:28Tutorialsなら普通に4.5以降にもありませんか
0942デフォルトの名無しさん
2010/01/25(月) 19:35:49939の言ってる奴、4.2って書いてあるんだが・・・
0943デフォルトの名無しさん
2010/01/25(月) 22:34:06大砲で標的を打つゲームのことではないのかな。4.5からなくなっています。
0944デフォルトの名無しさん
2010/01/26(火) 01:34:21ありがとう
0945デフォルトの名無しさん
2010/01/26(火) 07:44:47マジか。あのゲーム無くなったのか。
0946デフォルトの名無しさん
2010/01/26(火) 10:50:14を Windows で UTF-8 のままで mingw でコンパイルして実行すると
ウィンドウ内のメニューなどの日本語が文字化けします
ソースは tr("日本語") の様に指定しています
SJIS で保存しなおして mingw でコンパイルして実行すると正常に動作します
( おそらくこのままだとまた Linux でコンパイルすると Linux 側で文字化けすると思います )
Linux / Windows どちらの環境でも文字化けしないようにコーディングするにはどうすればよいでしょうか
出来れば UTF-8 で保存しておきたいです
0947デフォルトの名無しさん
2010/01/26(火) 10:58:57渡す前に変換するか、言語のように、たとえばEN CH JP`FRファイルを作って読み込む。
0948デフォルトの名無しさん
2010/01/26(火) 11:06:07俺はVS2008でやってるからちょっと事情違うけど、Windows向けにコンパイルする時はcp932に変換してからやってるよ。
0949デフォルトの名無しさん
2010/01/26(火) 11:10:46即レスありがとうございます
変換してコンパイルしかないんですかね
ただ表示するだけならリソースを分離してロード時に変換するだけでも良いんでしょうけど
内部で日本語処理したいとか考えるとUIの入出力のコードも考慮しないといけないですよね
0950デフォルトの名無しさん
2010/01/26(火) 11:12:530951デフォルトの名無しさん
2010/01/26(火) 11:18:150952デフォルトの名無しさん
2010/01/26(火) 11:19:35tr って OS に合わせてエンコードしてくれる訳じゃなかったんですね orz
0953デフォルトの名無しさん
2010/01/26(火) 11:20:44linuxのAPIのほうが標準Cに近いインターフェース持ってるからな。
0954デフォルトの名無しさん
2010/01/26(火) 11:25:020955デフォルトの名無しさん
2010/01/26(火) 11:30:28日本語を表示する主な方法には
QString.fromLocal8Bit()を使う
QTextCodecクラスを使う
.poファイルで「翻訳」する
の3通りがあります。
http://paison.hp.infoseek.co.jp/paison/qt/qtj.html
0956デフォルトの名無しさん
2010/01/26(火) 12:21:17trUtf8()が何をしてるのか良く分からないけど。
0957デフォルトの名無しさん
2010/01/26(火) 14:39:220958デフォルトの名無しさん
2010/01/26(火) 14:43:140959デフォルトの名無しさん
2010/01/26(火) 15:22:56Qtに文字列を渡すには、一度文字コードを変換する処理を挟まなければならない。
例えばutf-8のソースファイル内で文字列リテラルにマルチバイト文字が含まれている場合、
そのままでは文字化けしてしまうので、QString::fromUtf8()などの変換メソッドを通す必要がある。
以下のサンプル(ソースはutf-8)を実行すると、Utf8の変換メソッドを通した文字列以外は文字化けする。
変換メソッドを通すのが面倒な場合は、コメント部分を有効にすれば良い。
直接書いた他の文字列が文字化けすることがなくなる。
//QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8"));
//QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8"));
//QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8"));
const char* cptr = "ffあ";
QString qs = "ffあ";
QString qs_fromUtf8 = QString::fromUtf8("ffあ");
qDebug() << cptr;
qDebug() << qs;
qDebug() << qs_fromUtf8;
qDebug() << tr("ffあ");
qDebug() << trUtf8("ffあ");
と試した限りでは以上のように理解したけどどうでしょ。
// Qt Creator 作成の新規ファイルの文字コードがSystemから変えられないのはどうにかならんかな
// プロジェクト設定のデフォルトの文字コードはなんの意味があんねん
0960デフォルトの名無しさん
2010/01/26(火) 16:27:08ありがとうございます
いま出先で試せないので
帰ったら結果ご報告させて頂きます
0961デフォルトの名無しさん
2010/01/26(火) 23:06:21trUTF8() じゃなくて trUtf8() ね
0962デフォルトの名無しさん
2010/01/27(水) 18:02:35菅財務大臣
「昨日、フィンランドの副総理とお会いしましたが…キノアですか、
あの小さな国に大企業があるんです」
ノキアですよ。 ダメですよ無知を出しては…
0963デフォルトの名無しさん
2010/01/27(水) 18:21:01どこかでダウンロード出来るのでしょうか?
本文中に書かれていますか?
どの章のサンプルも全部中途半端で困ってます
完成版のソースがないと動かない原因がわからない orz
0964デフォルトの名無しさん
2010/01/27(水) 18:37:00サンプルは自分でインストールしたディレクトリにもあるよ
ttp://qt.nokia.com/doc/4.1/examples.html
ttp://qt.nokia.com/doc/4.6/tutorials.html
ttp://qt.nokia.com/doc/4.6/how-to-learn-qt.html
ttp://www.qtrac.eu/C++-GUI-Programming-with-Qt-4-1st-ed.zip
0965デフォルトの名無しさん
2010/01/27(水) 18:38:390966デフォルトの名無しさん
2010/01/27(水) 19:47:36これはどうですか?
ftp://ftp.oreilly.co.jp/9784873113449/
0967デフォルトの名無しさん
2010/01/27(水) 20:38:54消費性向と乗数効果が脳内でごっちゃになってる程度のおっさんですし。
0968デフォルトの名無しさん
2010/01/27(水) 20:47:46まさにそれです
thx!!
0969デフォルトの名無しさん
2010/01/27(水) 20:55:050970デフォルトの名無しさん
2010/01/28(木) 01:52:52Qt Creatorは自分でビルドしないとならんけど
0971デフォルトの名無しさん
2010/01/28(木) 01:54:560972デフォルトの名無しさん
2010/01/28(木) 02:39:56> Qt Creatorは自分でビルドしないとならんけど
そんくらいしてから配布しろとキノアには言いたい
0973デフォルトの名無しさん
2010/01/28(木) 03:45:310974デフォルトの名無しさん
2010/01/28(木) 04:51:31■VisualC++版Qt&Qt Creator インストール手順まとめ
(1)「Microsoft Visual C++ 2008」(Express Edition 以上) をインストール
(2)「Microsoft Debugging Tools」をインストール(※Qt Creator上でデバッグする時に必要)
http://www.microsoft.com/japan/whdc/devtools/debugging/installx86.mspx
(3)VC++2008版 Qt をインストール
http://qt.nokia.com/downloads/windows-cpp-vs2008
(4)Qt Creator をインストール
http://qt.nokia.com/downloads/qt-creator-binary-for-windows
「MinGW」と「Symbian ARM Device Debugger」オプションは不要
(5)環境変数を設定
PATH もともと入ってたパス;Qtインストールパス\bin
(6)Qt Creator を起動して初期設定
「ツール」→「オプション」メニューで設定ダイアログを開く
「プロジェクト」→「ビルドして実行」を開いて、「nmake の代わりに jom を使用する」の
チェックを≪外して≫から「Apply」ボタンをクリックする
「Qt4」→「Qt Versions」を開いて自動検出された「PATH に含まれる Qt」をクリックし、「MSVC バージョン」を 9.0 にする
「デバッグヘルパ」が×印になっていれば「リビルド」ボタンをクリックしてリビルドする
MinGW版との違い
Phononが利用可能。VC版の方がいろいろ速いらしい。ソースファイルはSJISで使う(UTF-8はNG)。
0975デフォルトの名無しさん
2010/01/28(木) 06:36:44まとめ乙。
ちょっと補足すると、(5)のPATH設定はせずに、(6)でマニュアルでQtのインストール
ディレクトリを指定する(実際にはqmake.exeの在処を、ファイルを開くダイアログで
指定する)という方法もある。
この方法を使うとMinGW版とVS2008版の両方をQt Creatorに認識させて、
プロジェクト設定でどちらを使うか選択できる。選択したときに表示が切り替わらない
バグがあるんだけど、ちゃんと動く。
但しQt Creatorの外に出て、exe単体で起動しようとする時には、当然PATHの
設定が必要。eve見たいな環境変数設定ツールを使うといいかも。
あと(1)のVC++ 2008(VS2008)は、MS SDKでも大丈夫だよ(無償かつ登録不要)。
ネイティブのコマンドラインツールだけしか必要ないんだから、MS SDKのインストール時
に.NET関係はすべて外しても大丈夫。
Qt Creatorのビルド済みバイナリは配布されてるし、MinGWとVS2008で共用だと
何度も書き込んでるんだが、相変わらず勘違いしてる人が多いね。
以前はそうじゃなかったからかな。
0976975
2010/01/28(木) 09:00:31ttp://www.microsoft.com/downloads/details.aspx?familyid=C17BA869-9671-4330-A63E-1FD44E0E2505&displaylang=en
これはwebインストール版(必要ファイルをダウンロードしながらインストールする)。
ISOイメージ版もあるけど、DVDに焼いたり、Daemon Toolsでマウントして使うのが
面倒だから、こちらの方が良いと思われ。
0977デフォルトの名無しさん
2010/01/28(木) 09:07:09ダウンロード出来なくなっていたの巻
0978デフォルトの名無しさん
2010/01/28(木) 09:24:04まず考えられんだろ。俺に知ってる限りでは,Windows3.1の頃には既にあったよ。
つーか,当時はIDE使わずにSDKだけで開発してるケースも多かった。
バージョンが変わって今のヤツがダウンロードできなくなっても,,新しいやつをダウン
ロードしてインストールし直せばいいだけの話。コマンドラインツールとヘッダやライブラリ,
ランタイムDLLのセットなんだから。
実際,古いSDK(2006年版以降)もまだダウンロードできるようになってるし。
むしろVC++ 2008 Express版の方が,いつ無くなってもおかしくない。
0979デフォルトの名無しさん
2010/01/28(木) 11:26:08聞いたんだが・・・
addin, やら mfc, atl を利用したなら standard 買ってね
云々だったような… vc++ はあんまideとしては進化して
ないような気もするがw
0980デフォルトの名無しさん
2010/01/28(木) 11:33:43いいじゃん
と思いつついい加減エディタは utf8 デフォで作成
するとほか環境から見たとき文字化けしなくなるからそうして欲しいわ・・・
0981デフォルトの名無しさん
2010/01/28(木) 12:01:04リストビューの中でファイルブラウジングをしようとしています。
戻る部分を作ろうとしていてカスタムスロットを定義しました。
void MainWindow::up_button(QModelIndex *index , QListView *view)
{
view->setRootIndex(index->parent());
}
それで下のように書いて
QDirModel *model = new QDirModel;
list = new QListView(centralwidget);
list->setGeometry(250, 250 , 250 , 250));
list->setModel(model);
list->setRootIndex(model->index(QDir::homePath()));
QListView::connect(list , SIGNAL(clicked(QModelIndex)) , list , SLOT(setRootIndex(QModelIndex)));
connect(list , SIGNAL(entered(QModelIndex)) , list , SLOT(up_button(QModelIndex , list)));
ビルドはうまくいってもうまく動作してくれません
アプリケーション出力で No such slot QListView::setRootIndex(model->parent)))
って出るのはスロット(listの部分)を正しいものにすればいいんだと思うんですが、何をセットすればいいんでしょうか?
0982デフォルトの名無しさん
2010/01/28(木) 12:07:10まぁ windows で
c++ で組むなら sjis + crlf の組むのが一番無難というのも
わかる気もするが…
0983デフォルトの名無しさん
2010/01/28(木) 13:34:140984デフォルトの名無しさん
2010/01/28(木) 14:32:32MSがShiftJISに固執するのはなんでだろうね!
0985デフォルトの名無しさん
2010/01/28(木) 16:56:08SIGNALをそれよりも引数の数の少ないSLOTに接続することはできない。
SLOTはSIGNALの引数の数と同じか少ないかのどちらかであり、
それぞれの引数の型が同じか暗黙に変換可能である必要がある。
この場合、up_button SLOTはQModelIndexだけを受け付けて
listは別の方法で決めるべき。
0986デフォルトの名無しさん
2010/01/28(木) 18:21:06こんな感じに変更
ダブルクリックでフォルダの中に入っていってクリックで上に行く感じ
connect(list , SIGNAL(doubelClicked(QModelIndex)) , this , SLOT(doubel_click(QModelIndex)));
connect(list , SIGNAL(clicked(QModelIndex)) , this , SLOT(up_button(QModelIndex)));
void MainWindow::up_button(QModelIndex index) {
list->setRootIndex(index.parent());
}
void MainWindow::double_click(QModelIndex index) {
if(static_cast<const QDirModel *>(index.model())->isDir(index)) {
list->setRootIndex(index);
}
}
アプリケーション出力には特にエラーは出なくなりますた
いきなりlist->setRootIndex(index.parent());がまずい?
puts("test")って入れてup_buttonが呼ばれてるのは確認済み
0987デフォルトの名無しさん
2010/01/28(木) 19:12:17>>3が古くなってるので
詰め込みすぎかも知れないが書き直してみた
0988次スレ>>3テンプレ案
2010/01/28(木) 19:13:10・プロジェクトのパスに日本語を入れちゃダメ
・日本語のソースコードは、MinGW版ならUTF-8、VC版ならSystem(Shift-JIS)
プロジェクト作成時に「プロジェクト」タブの「エディタの設定」→「デフォルトの文字コード」を設定すると幸せになれる
・デバッグ出力が文字化けする場合、プログラムの最初で文字コード変換設定をする
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8")); //ソースの文字コードを指定("utf-8"や"Shift-JIS")
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); //同上
qDebug() << "あいうえお";
・MinGW版の配布時は mingwm10.dll も一緒に入れておく(public domain で配布上の制限はない)
■インストール方法:MinGW版Qt & Qt Creator
(1)「Qt SDK for Windows」をインストールすればOK
http://qt.nokia.com/downloads/sdk-windows-cpp
■インストール方法:VisualC++版Qt & Qt Creator
MinGW版との違い:Phononが利用可能。VC版の方がいろいろ速いらしい
(1)「Microsoft Visual C++ 2008」(Express Edition 以上) をインストール
(2)「Microsoft Debugging Tools」をインストール(※Qt Creator上でデバッグする時に必要)
http://www.microsoft.com/japan/whdc/devtools/debugging/installx86.mspx
(3)「Qt libraries for WIndows(VS 2008)」をインストール
http://qt.nokia.com/downloads/windows-cpp-vs2008
(4)「Qt Creator Binary for Windows」をインストール
http://qt.nokia.com/downloads/qt-creator-binary-for-windows
(5)環境変数PATHを設定(もともと入ってたパス;Qtインストールパス\bin)
(6)Qt Creator を起動して、「ツール」→「オプション」メニューで初期設定
「プロジェクト」→「ビルドして実行」→「nmake の代わりに jom を使用する」のチェックを≪外して≫「適用」ボタン
「Qt4」→「Qt Versions」を開いて自動検出された「PATH に含まれる Qt」をクリックし「MSVC バージョン」を 9.0 にする
「デバッグヘルパ」が×印になっていれば「リビルド」ボタンをクリックしてリビルドする
0989デフォルトの名無しさん
2010/01/28(木) 22:02:37MimGWでg++を使っているのですが、今までのソースは全てSJISで書いています。
Qtを導入した場合、文字コードの問題が発生するのでしょうか。
よろしくお願いします。
0990次スレ>>3テンプレ案
2010/01/28(木) 22:37:23Qtの問題じゃなくて、gccがSJIS前提じゃないのでUTF-8が無難ってことです
お手元のソースでも、「表示」とか「能力」みたいな文字がソースに含まれるとコンパイルエラーや
もっとマズイ場合は一行無視されるようなトラブルが発生するかもです
いちおう、手間を惜しまない人ならgccのオプションを
finput-charset=CP932 fexec-charset=CP932
のようにすれば回避できるらしいですよ(未確認)
参考>ttp://www8.plala.or.jp/kusutaku/yusuket/gcc_memo.html
0991989
2010/01/28(木) 22:48:46なるほど。
ありがとうございます。
> 「表示」とか「能力」みたいな文字がソースに含まれると
全くその通りです。
たまに出くわします。
gccでのコンパイルオプションで頑張って見ようと思います。
0992デフォルトの名無しさん
2010/01/29(金) 00:03:190993デフォルトの名無しさん
2010/01/29(金) 02:31:36メモ帳で保存したUTF-8はBOMが付いてるせいでgcc通らないとか、色々ややこしい
0994デフォルトの名無しさん
2010/01/29(金) 06:22:13参考サイトの情報もヨロ。
>>2のほかに、
Qt Users Forum Japan
http://qtusersforum.s2.zmx.jp/forum/index.php
も入ってるといいと思う。
0995デフォルトの名無しさん
2010/01/29(金) 06:28:10Qt付属のMinGWはlibivonvがリンクされていないので、そのオプションは
通用しないんだorz
俺はTDM版MinGW(gcc4.4.1)で、Qtをソースからビルドして使ってる。
半日掛かったけど。
つ ttp://www.tdragon.net/recentgcc/
ちゃんとQt Creatorからも認識されるし、暫く使ってるけど無問題。
これだと、-finput-charset=CP932 -fexec-charset=CP932 が効く。
.pro ファイルに、
QMAKE_CXXFLAGS += -finput-charset=CP932 -fexec-charset=CP932
と書けばOK.。
0996デフォルトの名無しさん
2010/01/29(金) 06:28:50シグナルをemitする時にnewしたデータを渡すのですが
あとで拡張する際にスロット側でdeleteするのを忘れそうで嫌です
あらかじめ、delete処理をするスロットを作ってconnectしておこう、と考えたのですが
qtはスロットを実行する順序を決めてないそうなので困っています
実行順序を決めるような機能はないでしょうか、あるいはそんなテクニックはないでしょうか
よろしくお願いします
0997デフォルトの名無しさん
2010/01/29(金) 15:13:15http://pc12.2ch.net/test/read.cgi/tech/1264745386/
0998デフォルトの名無しさん
2010/01/29(金) 16:38:490999デフォルトの名無しさん
2010/01/29(金) 16:40:041000デフォルトの名無しさん
2010/01/29(金) 16:40:5110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。