[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 01/25 10:41 / Filesize : 218 KB / Number-of Response : 637
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【RAD統合環境】 Qt 総合スレ 5 【Win/Mac/Linux】



1 名前:デフォルトの名無しさん [2009/10/01(木) 12:08:27 ]
Qt(キュート)は C++ ベースの GUI ライブラリです。
フォーム、ボタンなどの各種ウィジェットからネットワーク、マルチスレッド、グラフィックス(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】
pc12.2ch.net/test/read.cgi/tech/1239996587/

152 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 23:07:51 ]
でも今 PyQtの品質が微妙なので、PySideにがんばってもらわなければ。
PySideががんばっている分、 boost.python もどんどん良くなってる。

153 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 23:09:50 ]
>>150
>組み込み・モバイル対応

iPhone でも Android でも webOS でも使えないんだよね?
Maemo は結局 Gtk+ のままだし、Qtopia は Zaurus も
とっくにディスコンになって、どうなるんだろね

154 名前:デフォルトの名無しさん [2009/10/17(土) 23:20:33 ]
>>136
前スレ(Qt総合スレ4)の804、805、811、816、819、820、821を呼んでみたらいいと思う。
特に、816以降。
こちらでは、グーグルで検索して、キャッシュで見ることができた。

話は変わるけど。
こっちで試してみたら、2回目の起動で日本語化された。
もう一回起動してみても日本語化されない。

155 名前:154 [2009/10/17(土) 23:21:37 ]
訂正
>もう一回起動してみても日本語化されない。
もう一回起動してみても日本語化されない?

156 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 23:35:44 ]
>>153
QtはNokiaが買収したんだぜ?
スマートフォン世界最大販売数を誇るSymbian提供してるところに

157 名前:デフォルトの名無しさん [2009/10/17(土) 23:37:03 ]
>>144
>もし可能であればネットワークにQtを置いて、環境変数でそこを指すようにして、
>ネットワークで共有、ってことをやりたい。
>それが出来るんならまぁ使ってもいいかな、って気がします。
今は無理だけど、将来そうなると思う。

>ところで、wxPythonと比較してPyQtは何に優れてるんですかね。
>AutodeskがPyQtを推す意味って何なんだろうか。
Pythonは詳しくないけどC++でいえば、やっぱり楽にプログラミングできる
ことじゃない?

PythonのバインディングにPySideも加わった。
ttp://sourceforge.jp/magazine/09/08/20/072238

158 名前:デフォルトの名無しさん [2009/10/17(土) 23:43:59 ]
>>153
>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

159 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 23:44:13 ]
>>156
開発者を S60 から Qt に移行させるのは大変だと思うぜ。
最大販売数って言うけど、Qt なんか関係ないローエンドの機種を
大量に売ってるからじゃなかったっけ。ハイエンド機種も日本じゃ
売ってないし、iPhone や Android に比べてどうだろうね。

160 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 23:52:04 ]
>>158
Maemo のネイティブ API も Qt ベースになるんだね。
古い情報を見てたわ。

wiki.maemo.org/Qt4_Hildon



161 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 23:56:14 ]
今はまだ過渡期状態だけど、
凄いスピードで進んでいると思うよ。

停滞しているどっかの何かよりかは
ずっと期待できるな。

162 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 00:08:07 ]
NOKIA は Maemo も Symbian も全部 Qt ベースにするつもりだね。
もっとも、製品に乗るのは早くても来年の終わりか再来年になるだろうけど。

けど、日本ではあまり関係なさそうだな。
もう一度日本市場に戻ってくるかは疑問だし、戻ってきたとしても売れるかというと。
Symbian Foundation にも Qt が入ってくるだろうから、そのときに
日本で Symbian 使ってるところが使うことになるのかな。

163 名前:デフォルトの名無しさん [2009/10/18(日) 00:30:14 ]
>>162
>NOKIA は Maemo も Symbian も全部 Qt ベースにするつもりだね。
>もっとも、製品に乗るのは早くても来年の終わりか再来年になるだろうけど。

下記に、Qt4.6 のリリース予定は、2010年の第1四半年となっているけど、
これだとそれくらいになるの?
qt.nokia.com/about/nokia-announces-official-qt-port-to-maemo-5

164 名前:デフォルトの名無しさん [2009/10/18(日) 00:39:41 ]
Symbian Foundation Japanの公式ブログ
ttp://blogjp.symbian.org/

ここで、YouTubeにアップされた携帯電話で動くQtのデモのが見れる。

下記はリンク元。Qtのデモ映像がたくさん見れる。
www.youtube.com/user/QtStudios


165 名前:デフォルトの名無しさん [2009/10/18(日) 01:54:45 ]
>>151
>Designerの格上げってサブクラス作るって事なのですね。。
>格上げするのはいいけど、格上げしたクラスのヘッダファイルがないと言われました。
カスタムクラスなんだけど、格上げは、Designerで配置したQWidgetなどに、
カスタムクラスを組み込むもの。
だから見た目は、Designer上で設定できて、なおかつそのクラスの振る舞い定義として、
コードを各個とができる。
通常のサブクラス化で行うようなクラスヘッダファイルと、実装ファイルを定義すればよい。

>これがカスタムクラス書くのと変わらないという意味なのでしょうか。
そう。結局コード書かないといけないという意味で。

>イベントフィルター云々はどのようにやるのでしょうか?
QObjectを継承したクラスのイベントをハンドルできる機能。
QWidgetもQObjectを継承しているから、ほかのウィジットのイベントをハンドルできる。
イベントをハンドルする側にeventFilter()を定義し、ここでイベント処理の内容を書く。
そして、イベントをハンドルされる側のinstallEventFilter()をコールして、
イベントをハンドルする側のオブジェクトを引数として渡す。

166 名前:165 [2009/10/18(日) 01:57:05 ]
>>151
>やりたいことは、単に何かのコントロール(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文で
切り分けなければならない。
個人的には、イベントフィルター専用クラスを用意して使いまわすようなことがないのなら、
やっぱり、通常のカスタムクラスか格上げのほうがいいような気がするけど。

167 名前:165 [2009/10/18(日) 01:58:51 ]
>>165
訂正
>コードを各個とができる。
コードを書くことができる。

168 名前:165 [2009/10/18(日) 02:08:20 ]
>>166
ごめん。再び訂正

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の基底クラスと仮定して書いた。

169 名前:デフォルトの名無しさん [2009/10/18(日) 02:13:22 ]
>>168
再び訂正
誤)return QWidget::eventFilter(obj, event);
正)return QWidget::eventFilter(iObject, iEvent);

170 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 02:13:28 ]
>157
ttp://blog.taikomatsu.com/2008/06/21/pyqt4メモ/



171 名前:デフォルトの名無しさん [2009/10/18(日) 13:42:32 ]
>>151

>Designerの格上げってサブクラス作るって事なのですね。。
>格上げするのはいいけど、格上げしたクラスのヘッダファイルがないと言われました。

格上げとは、DesignerプラグインにはしていないウィジェットをDesignerのフォームで使えるようにする機能です。
例えば、QPushButtonを継承して作ったPushButtonウィジェットがあって、Designerプラグインにはしていないとします。
そうすると、これから作ろうとするフォームにPushButtonウィジェットを入れることができません。そこで、Designer
で既に使えるようになっているQPushButtonを格上げ、つまり、サブクラスのPushButtonと入換えれば、殆どの属性は
同じなので、独自に追加したプロパティの他は、Designerで操作しながらフォームを作成できます。PushButtonは、
別に作成しておくクラスなので、その実装コードやヘッダーは別に用意します。PushButtonは、C++のみで作成してもよいし、
Designerを使って作成してもよいです。

172 名前:デフォルトの名無しさん [2009/10/18(日) 13:52:34 ]
821 :818[] 投稿日:2009-09-15 16:59:28
>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
==================================================



173 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 15:07:51 ]
みんな知ってるよ

174 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 15:26:07 ]
プログラム中でLayoutするのが面倒ですが
QWidgets配置をdesignしたschemeをXMLとかで出力して
それに応じてプログラム中でautoでQWidgetsを
配置していってくれるツールはありますか?


175 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 15:29:39 ]
Qtでは,ウィンドウのデザインは次の3つの方法でできます.

    * C++のソースに直接記述  必要なクラスを作成して,プログラム中に直接記述します.
    * XMLでインターフェースを記述  WindowsのXAMLのように,デザインの情報をXML(uiファイル)で記述します.
私は,この方法がもっとも性に合っていますが,QtのインターフェースのXMLのマニュアルを見つけることができませんでした.今のところ,諦めています.
    * Qt Designerでuiファイルを作成  マウスとキーボードを用いて,uiファイルを作成します.もっとも手軽に,インタフェースの作成ができるでしょう.

176 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 15:34:24 ]
www.off-soft.net/ja/develop/qt/qt1-3.html

177 名前:デフォルトの名無しさん [2009/10/18(日) 15:58:59 ]
>>171
>PushButtonは、C++のみで作成してもよいし、Designerを使って作成してもよいです。
Designerで作成する方法は、今のバージョンでも使用できる?

178 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 16:15:04 ]
>>176
出来ました
ありがとうございました

179 名前:デフォルトの名無しさん [2009/10/18(日) 17:30:03 ]
>>177
Qt Creatorと併せて使えばできます。
Qt Creatorの "新規作成" の "Qt デザイナフォームクラス" を使えば、
フォームに加えて実装部とヘッダー部のテンプレートが作られます。




180 名前:デフォルトの名無しさん [2009/10/18(日) 17:39:52 ]
>>174
Qt Desingerで配置して、QUiLoaderを使うというのはどうですか。

Qt 4.5: QUiLoader Class Reference
doc.trolltech.com/4.5/quiloader.html



181 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 17:58:16 ]
>>180
ありがとうございます
>>176さんのところに書いてありました

182 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 18:15:42 ]
>>180
横から便乗だけど
PyQt でも QUiLoader 使える?

183 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 18:21:28 ]
>>182
ダメポ

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.htmlwww.nabble.com/QtUiTools,-QUiLoader-and-uic-module-td19878875.html

184 名前:デフォルトの名無しさん [2009/10/18(日) 18:28:15 ]
>>179
レスありがとう。

でも知りたいのは、Qt Creatorではなく、今のバージョンのDesignerにPushButtonを
作る機能があるのかないのかが知りたいんです。

185 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 18:33:36 ]
>>183
それ出来るっていう意味で書かれてるんじゃないの?

186 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 18:36:38 ]
Qtスレがこれほど活発だってのに、Gtkスレは閑古鳥だな…
うらやましい限りだ。

187 名前:デフォルトの名無しさん [2009/10/18(日) 18:42:27 ]
>>186
Gtkスレってどれのこと?

188 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 18:51:20 ]
Qtのコンパイルってどんだけ時間かかるんだよorz

189 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 18:58:14 ]
>>187
Gtkプログラミング on Windows!!!
pc12.2ch.net/test/read.cgi/tech/1147024203/

上のスレのことだけど、他にもあったのか?

190 名前:デフォルトの名無しさん [2009/10/18(日) 19:01:13 ]
>>189
やっぱりこれのことか。
ありがとう。

Gtkならほかにもスレッドがありそうな気がして、自分が見落としているのかと思って。



191 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 19:09:13 ]
他にもあるよ。

GTK+プログラミング
pc11.2ch.net/test/read.cgi/linux/1188968326/


192 名前:デフォルトの名無しさん [2009/10/18(日) 19:11:29 ]
Gtkはなぁ・・・
Windowsで使うものじゃないと
なぜか決めつけてかかってる俺

193 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 19:24:50 ]
奇麗に棲み分けできてるからね。

Win : 色々ある
UN*X : ほぼ Gtk+
Mac OS X : ほぼ Cocoa

194 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 20:10:25 ]
KDE派だからLinuxでもQtな俺

195 名前:デフォルトの名無しさん [2009/10/18(日) 20:28:35 ]
>>191
ありがとう。
見てきた。

196 名前:デフォルトの名無しさん [2009/10/18(日) 21:19:24 ]
>>184
Designerは、フォームの上にウィジェットを並べる機能のみを提供するので、
将来サブクラスを作れるような機能は追加されません。

197 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 21:26:25 ]
やっとコンパイル終わったよ。4時間ぐらいたってねーか?

198 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 21:38:21 ]
友愛とUIを掛けてるのか

199 名前:デフォルトの名無しさん [2009/10/18(日) 23:25:59 ]
>>196
ありがとう。

200 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 23:27:18 ]
QtCreatorのソースファイルツリーってフォルダ階層作れないのかな?
ファイル数増えたら見づらくなりそう。



201 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 23:41:59 ]
>>182-185
QUiLoader そのものはだめだけど 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


202 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 00:02:46 ]
>165
MainWidget
+PictWidget
+StatusBar
みたいに、メインウィンドウ上に画像Widgetとステータスバーがあり、
画像の画素情報をステータスバーにも反映させたいような場合、
MainWidgetでイベント処理するのが適当だと思うのですが、
mouseMoveEvent()メンバ関数をオーバーライドするような感じではないのですね。
もう少し勉強してみます。ありがとう。

仮にDesignerで何らかのWidgetを格上げしたPictWidgetのmouseMoveEvent()を
オーバーライドして処理しようにも、親のMainWidgetのメンバ(例えばStatusBar)とかアクセスできない
ですよね。入門Qt4プログラミングは購入したので、7章あたり読んでみます。

203 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 00:03:19 ]
>>201
ありがとうございます
  @QtCore.pyqtSignature('')
  def on_myPB_clicked(self):
    print 'a'
これだけでも呼ばれているってことは
connectも自動でやってくれるんですね


204 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 00:06:27 ]

myPB の位置を XML で property geometry で指定してても
その位置に出て来ないですね
指定の仕方が間違ってるのかな
もう少し勉強してみます

205 名前:デフォルトの名無しさん [2009/10/19(月) 00:20:33 ]
>>200
次期リリースの1.3のベータ版なら実ファイル階層を区分けして表示してくれるよ。
ただし、ヘッダ、実装ファイル、リソースファイルなどに大きく区分けされて、
その中にそれぞれのフォルダーが表示される。
ただし、この版では日本語化されていないし、日本語の入力もできなかった。
(環境がLinuxでの話)
qt.nokia.com/developer/qt-creator-1.3-preview

下記のYouTubeのQtStudiosのQt Creator-Rename, find...というのを見れば、
新しく実装されたリネームや検索機能の使用の様子が見れるよ。
ここには、その他にもQt Creatorの使っている様子などアップされている。
www.youtube.com/user/QtStudios


206 名前:デフォルトの名無しさん [2009/10/19(月) 00:27:25 ]
Qt iPhone: qt.gitorious.org/+qt-iphone/qt/qt-iphone-clone

207 名前:デフォルトの名無しさん [2009/10/19(月) 00:52:23 ]
>>202
>MainWidget
>+PictWidget
>+StatusBar
QtのQMainWindowには、MenuBar、ToolBar、DockWidget、CentralWidget、StatusBar
を配置する場所が予め用意されているから、通常は、ステータスバーはメインウィジットに配置する。
MainWidgetがQMainWindowを継承していないのならば、継承させた方が楽できていいと思うけど。
下記に、メインウィンドウと書いてあるから、QMainWindowから派生していたら、ごめん。

>MainWidget
>+PictWidget
>+StatusBar
>みたいに、メインウィンドウ上に画像Widgetとステータスバーがあり、
>画像の画素情報をステータスバーにも反映させたいような場合、
>MainWidgetでイベント処理するのが適当だと思うのですが、
>mouseMoveEvent()メンバ関数をオーバーライドするような感じではないのですね。
>もう少し勉強してみます。ありがとう。
1例として、PictWidgetでは、クリックされたらそれを知らせるシグナルを発生するようにし、
引数として、必要な情報を渡すようにする。
そして、MainWindowにスロットを定義して、そこで処理関数を書けばよい。
もちろん両者を接続する必要する。

208 名前:207 [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++と同様にのメンバーポインターとして
ほかのウィジットを参照させればいいだけ。

209 名前:207 [2009/10/19(月) 00:57:33 ]
つづき

>>202
>ですよね。入門Qt4プログラミングは購入したので、7章あたり読んでみます。
ごめん、購入したいとは思っているんだけど、まだ買ってない。

210 名前:207 [2009/10/19(月) 01:02:16 ]
>>202
>オーバーライドして処理しようにも、親のMainWidgetのメンバ(例えばStatusBar)とかアクセスできない
>ですよね。
MainWidgetがQMainWindowを継承しているのならば、StatusBarを取得する関数がある。
無ければ自分で書けばいいだけの話のような気がするけど。



211 名前:207 [2009/10/19(月) 01:26:31 ]
>>202
>MainWidgetでイベント処理するのが適当だと思うのですが、
これは、設計によりけりだと思う。

>mouseMoveEvent()メンバ関数をオーバーライドするような感じではないのですね。
上で書いた方法で、StatusBarを参照できるから、この方法、つまりCentralWidgetが
自分に関する処理を自分で行うのも、ありだと思うけど。

212 名前:200 mailto:sage [2009/10/19(月) 02:06:19 ]
>>205
おお、もう実装予定なのか!
リネーム機能も良さげだし、QtCreatorすばらしいな。

213 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 02:18:50 ]
Windowsで64bitアプリって作れますか?

214 名前:デフォルトの名無しさん [2009/10/19(月) 02:59:28 ]
>>212
205に書いてある通り、開発版では実装済み。
リンクたどって、開発版を試しにインストールしてみれば試せるよ。

215 名前:デフォルトの名無しさん [2009/10/19(月) 03:10:38 ]
>>213
MSVCなら可能。MinGWは、コンパイラーが対応してないせいで今のところ無理みたい。

doc.trolltech.com/4.5/supported-platforms.html

216 名前:215 [2009/10/19(月) 03:14:38 ]
ごめん、MinGWも可能みたい。

217 名前:213 mailto:sage [2009/10/19(月) 03:25:20 ]
とりあえずMSVCでできたっぽい。
バイナリ無くてコンパイルに時間がかかるから試行錯誤にも時間がかかる。
やりかた書いて良いよね? でも疲れたから今日は寝る。

一応qt creatorの64bit版を置いとく。
ftp://ftp.trolltech.com/qtcreator/snapshots/2009-05-25/
64bit版を使わないとデバッグができない。32bit プロセス(qt creator)から
64bit DLL(CDBデバッガ)を読み込めないから当然か。

残念ながらこれ以降、今日までの間に64bitバイナリは無いようだ。
最新のが使いたいなら自分でコンパイルしろと。

218 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 15:19:29 ]
Qt Creator 1.3 betaをダウンロードしてWindows/TDM's MinGWでQtを使い始めてみてるんだけど,
なかなか調子よく動くんで喜んでいたら,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は沢山あるわけで,どうやって解決したらいいのか知ってる人がいたら教えてください。

219 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 15:44:01 ]
なんでクロスプラットフォームなQt使っていて
わざわざWindows専用のMessageBoxなんて使うの?

QMessageBoxつかえばいいじゃない。

220 名前:219 mailto:sage [2009/10/19(月) 15:45:33 ]
うん。最後の一段落見逃してたw

言い直す、
他にもWIN32 APIの代わりのQなんたらがあるじゃない。



221 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 15:47:53 ]
コンパイルエラー、貼らないと

222 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 15:58:14 ]
ソースをUTF-8で保存

223 名前:218 mailto:sage [2009/10/19(月) 16:04:02 ]
>>219
Qtの設計思想からして,何でも揃ってるんなら,そういう行き方で行くべきなんでしょうね。
始めたばかりだからよくわからないんですが,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で
確認済です。

224 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 16:13:53 ]
-fexec-charset=UTF-16LE?

225 名前:218 mailto:sage [2009/10/19(月) 16:21:11 ]
>>223
自己レス。

> ですね。よく調べたら定義済みなのは UNICODE で _UNICODEじゃなかったので_T( )を使った場合は
> ::MessageBoxAが呼び出されてたんですが,

この記述はウソでした。_T( )が wchar_t* じゃなくて char* になってたんでした。呼び出されるのはMessageBoxW
の方です。いずれにしろL""を使ってMessageBoxWを呼び出すとエラーになります。

>>222
どこで保存時のエンコードを指定するんでしょうか? 外部エディタでUTF-8で保存し直すのですか?
それともQt Creatorの設定でフォントにMS ゴシックを指定したのがいけなかったのかな?

>>224
それはないと思います。仮にそうだとしても,Qt Creatorのどこでコンパイラのコマンドラインオプションを
指定するのでしょうか?

226 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 16:25:54 ]
>>218
QMAKE_CXXFLAGS += --input-charset=cp932 --exec-charset=cp932

227 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 16:41:40 ]
>>225
左の"Projects"ボタンから下の方に
"Editor Settings" として "Default File Encoding" がある。

また、開いているファイルには"Edit"に文字コード指定用の項目がある。

228 名前:218 mailto:sage [2009/10/19(月) 16:47:15 ]
>>226
.pro ファイルにそのように書いたらうまく行きました。
ヘルプをよく探してみたら「qmake Platform Notes」に載ってました。

ヘルプの「qmake Advanced Usage」のところを見ていたら,グローバルに定義したい
#define のやり方も書いてありました。

「qmake Variable Reference」にいろいろ載ってますね。じっくり読んでみます。

助かりました。ありがとうございました。

229 名前:218 mailto:sage [2009/10/19(月) 16:56:41 ]
>>227
おっしゃるとおりありました。
UTF-8に変えたら,>>226で教えていただいた方法を使わなくてもすんなり行きました。

用途によって使い分けます。
ありがとういございました。


230 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 17:36:32 ]
ぼそ。。。作りにくいと思ったとき、それは間違った道。。。



231 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 17:57:12 ]
独り言...Windows上のいろんなコンパイラで共通に使えるライブラリ作って
使ってるんだよな〜

232 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 19:48:39 ]
UNICODE化推進したのに
WindowsはいつまでSJISに縛られるんだろう

233 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 19:50:14 ]
しばられてるのはお前だアホ

234 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 20:04:30 ]
VCだとソースがSJIS固定じゃない

235 名前:デフォルトの名無しさん [2009/10/19(月) 21:50:49 ]
ファイル名取得ダイアログのWindowsでの振る舞いについて質問があります。
リファレンスの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

236 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 22:00:15 ]
218は正しくはWin32APIスレ行くべきだったな。
L""やTEXT(),_T()書いたからと言って、SJISでソースかいてりゃ文字列リテラルの中身はSJISだ。
それをUnicodeですと言いはればそりゃコンパイラも怒るわ。

237 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 22:12:20 ]
Qt CreatorをMSVCで64bitでコンパイルすると

Qt Creator起動時に
Failed to load core: QTパス/lib/qtcreator/plugins/Nokia/Core.dll: Cannot load library QTパス/lib/qtcreator/plugins/Nokia/Core.dll:
指定されたモジュールが見つかりません。っていわれる。ちゃんとDLLあるのに・・・

238 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 22:13:54 ]
じつはそのプラグインdllが32bitだったりしない?

239 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 22:21:42 ]
禿げ敷く胴衣

240 名前:237 mailto:sage [2009/10/19(月) 22:33:31 ]
QTへのPATHの設定が必要なだけだった。
エラーメッセージ紛らわしい。

でもQt creatorは起動したがまだコンパイルできず。
jom.exeってなんだ? どうすれば現れる?



241 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 22:36:57 ]
コンパイル済みのqt creatorからたぶん32bitのjom.exeをコピったら動いた。
もしかして別作者のツール?

とりあえずこれでWindows 64bitへの旅は終わったかな?

242 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 22:38:57 ]
ついでに、プラグインdllが32bitかどうか
調べるツールとかしりませんか?
他にもいろいろ情報を知りたい。

7zipでDLLを開いてそのプロパティで調べたけどw

243 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 23:07:51 ]
>>241
jom も 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

244 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 04:14:38 ]
ttp://www.cycleof5th.com/tips/index.php?date=2007-10-18

245 名前:218 mailto:sage [2009/10/20(火) 05:59:18 ]
>>236
あんたわかってないね。

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が頭良くて、自動変換する可能性はあるけど)。

246 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 08:51:34 ]
いいえVCはアホの子です
ソースに日本語コメントが有って
utf-8で保存されてたりするだけで
コンパイルすら通らなくなります

247 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 09:00:11 ]
Windowsのインストーラは標準ではUTF-8の環境をインストールしてくれないので
インストール時に項目をチェックしてないのではないかな?

248 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 09:19:15 ]
UTF-8の環境ってなんだ?
UTF-8ってのはASCIIコード互換なんだよ。そのように作られている。
ASCIIの文字の範囲なら1バイト、それ以外なら最大4バイトの可変長文字コード

だから、ソースに日本語が入っていてもUTF8なら
ASCII文字と認識されるだけなので、コンパイルが通らないことは無い。

249 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 09:23:38 ]
>>243
jom ぱねぇwww

マルチコア使い切ってる。長いQtのコンパイル時間が半分になるw
これ本当にnmake完全互換ってことでいいのかな?
それならQt以外でも使えるな。nmakeにリネームしてやるかw


250 名前:デフォルトの名無しさん [2009/10/20(火) 10:41:40 ]
>>245
>MinGW gccはたまたまデフォルトがUTF-8
GCCのデフォルトはASCIIでは?



251 名前:デフォルトの名無しさん [2009/10/20(火) 10:50:55 ]
>>235
Qtのファイル取得ダイアログは、デフォルトではWindows固有のファイル取得ダイアログを
呼出してイベント処理されるため、そのファイル取得ダイアログの表示中には、
Qtの主イベントループで処理されるタイマーは、タイムアウトしても直ぐには処理されません。


252 名前:245 mailto:sage [2009/10/20(火) 10:51:47 ]
>>250
正しくはそう言うべきなのかもしれないが,>>248の言うとおりUTF-8はASCII互換なので,
UTF-8でソースコードを書いてL""の""の中に日本語書いても異常なコードとは認識せず,
ちゃんとUTF-16に変換してくれるので,「なんたらW」のWIN32 APIを呼び出したとき文字化けしない。

本家gccは知らないが,MinGW gccはそうなってるよ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<218KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef