QWebView を一度でも new すると、ヒープを580MB 消費する

プロジェクト (*.pro) に webkitwidgets を追加します QT += webkitwidgets QWebView を new し delete するコードを加えて、ヒープ残量を確認します。 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QtWebKitWidgets> MainWindow::MainWindow(QWidget *pare</qtwebkitwidgets>…

Qtアプリ (MinGW/32bit) が 何MB mallocできるか確かめてみた

Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); // ここから int s = 0; int len = 1000 * 1000 * 10; while (true) { // 10MB ずつ確保して、失敗するまで続ける void* ptr = malloc( len ); if (ptr == NUL…

ブラウザからのドラッグ&ドロップで、リンク先が優先される? (Qt5.4.1)

外部ブラウザ (ChromeやEdge) に表示されている画像をフォームにドラッグ&ドロップする際、Aタグが指定されていると、画像のURLでなくリンク先(Aタグ) のURLが飛んで来るような気がします。常にIMGタグのURLを取得できないものでしょうか……。 void SomeWid…

グラフィックス読み物を執筆しました

売れてないようなので、皆さんよろしくお願いします……つらい。2Dグラフィックスのしくみ ――図解でよくわかる画像処理技術のセオリー (WEB+DB PRESS plus)作者: FireAlpaca開発チーム出版社/メーカー: 技術評論社発売日: 2015/08/12メディア: 単行本(ソフト…

class template がビルドされない問題

ヘッダファイルに書いた class template をエディタで編集しても再コンパイルされない問題は、proファイル内で、 DEPENDPATH += ファイルのあるフォルダ と指定してやると解決するようです (解決しました)。Qt勉強会 #26 で教えて頂きました。 http://qt5.jp…

ドラッグ&ドロップ処理の悩み

QDrag* drag = new QDrag( this ); QMimeData *mimeData = new QMimeData(); mimeData->setText( path ); drag->setMimeData( mimeData ); drag->setPixmap( iconPixmap ); Qt::DropAction dropAction = drag->exec(); のような形でドラッグ&ドロップ処理を…

DockWidgetだけど、常にFloating状態にしたい

QDockWidget::setFeatures( ... ) じゃ指定できなさそうです。

Qt4.7.4 に戻しました

App

http://d.hatena.ne.jp/QtCoder/20140710 (Qt5 に差し替えました 一ヶ月前、Qt5化したアプリケーションを公開したのですが、あまりにトラブルが多いので、結局 Windows/Mac版ともに Qt4.7.4 に戻しました。スーパーハッカーじゃないので、原因の分からないト…

Qt5から Restoreメニューが消えた

MDIの子ウィンドウのタイトル上で右クリックをした時のポップアップから、Restoreメニューが表示されなくなりました (Qt4.7では表示)。どうやったら表示できるのでしょうか…。 Qt4.7.4 Qt 5.3.0

Qt5でプリンタを取得できない事がある

QPrinterInfo pi = QPrinterInfo::defaultPrinter(); if (pi.isNull()) { // プリンタを取得できない QMessageBox::warning( this, "", "", QMessageBox::Ok ); return; } 以上のコードで、Qt4.7.4では概ねプリンタを取得できていましたが、Qt5だとプリンタ…

Mac OS X 10.7 (Lion) だと落ちる

バグなのかよく分かりませんが、Qt5.3.1 で開発しているアプリケーションの、DockWidgetのタイトルバーを何度かダブルクリックすると(ドッキングしたり解除したりを繰り返す)、 Application Specific Information: objc_msgSend() selector name: mouseUp:…

MainWindow::closeEvent が二回呼ばれる

バグなのか仕様なのか、よく分かりませんが、Mac版のQt5.3.0 で、 赤いボタンでアプリケーションを閉じると、closeEventは1度しか呼ばれない メニューから "Quit Hoge(アプリ名)" を実行すると、closeEventが2度呼ばれる 同じ悩みを抱えてる人はいないだろ…

Win32でフォントを列挙する (QtでWin32 API を使う)

int gFontCount = 0; int CALLBACK EnumFontProc( ENUMLOGFONTEX* lpelf, NEWTEXTMETRIC* lpntm, DWORD fontType, LPARAM lParam ) { gFontCount++; Widget* widget = (Widget*)lParam; widget->setWindowTitle( QString::number(gFontCount) ); std::wstrin…

FireAlpaca を Qt5 に差し替えました

App

http://firealpaca.com/beta (FireAlpaca Beta研究室 日本 Qtユーザー会の皆様に助けて頂きながら、FireAlpacaのライブラリを Qt4.7.4 から Qt5.3.0 に差し替える事ができました。ありがとうございました。まだ正式版ではないですが、お試し頂ければ幸いです…

nativeEventFilter ってどうやってハンドルするの?

Windowsで、ウィンドウメッセージ (WM_KEYDOWN とか) みたいなネイティブメッセージをハンドルしたい時、どうするのか調べてみました。nativeEventFilter( ... ) を TMainWindow や QApplication でオーバーライドしてもメッセージが飛んでこなかったので挫…

Qt5.3.0 (Windows) の TabletEvent がおかしい

Qtではペンタブレットの使用時、 QEvent::TabletEnterProximity (ペンを認識した) QEvent::TabletLeaveProximity (ペンを認識できなくなった) というイベントが発生しますが、Qt5.3.0 (Windows) だと、QEvent::TabletLeaveProximity が発生しません。QEvent:…

Qt5.3.0 (Mac版) で、単体キーのショートカットを受け付けない

FireAlpacaでは、前景色・背景色の入れ替えを、Xキーに割り当てています。 ui->action_Hoge->setShortcut( tr("X") ); ui->action_Hoge->setShortcut( QKeySequence( Qt::Key_X ) ); // これもダメ Qt4.7までは、Windows版もMac版も上手く動作していました。…

pthreadの代わりに、QtConcurrentRunを使う

pthreadを使う方法が分からなかったんですが、「QtConcurrentを使うと良い」というアドバイスを頂いたので、試してみました(実戦投入はまだです)。Debugモードじゃないと最適化されて一瞬で終わる模様。 #include <QtConcurrentRun> #include <QElapsedTimer> struct TParam { int threadIn</qelapsedtimer></qtconcurrentrun>…

Qt4.8.4 の tabletEvent (Mac版)

Qt4.8.4 (Mac版) では、Qt4.7.4 では飛んでくる QWidget::tabletEvent が飛んで来ません。どうやら放置されてるようですね……困った(涙)。 https://bugreports.qt-project.org/browse/QTBUG-26532 http://stackoverflow.com/questions/15219328/qt-4-8-tabl…

QWebView が止まらない

QUrl url( "http://www.google.co.jp" ); QWebView* view = new QWebView(); view->setUrl( url ); delete view; というコードでQWebViewを作成・削除すると、バックグラウンドでネットワーク関連のレジストリにアクセスをし続けます (Process Monitor - Sys…

QtSDK 1.2.1 と macdeployqt

Kenjiさんにご指摘いただいた後で申し訳ないのですが、QtSDK 1.2.1 (Qt4.8.1) が公開されていたので、Mac版を試してみました。QtDesktopで問題なくビルドできたのは良かったんですが、やはりビルドして macdeployqt したアプリケーションが Leopard で起動で…

macdeployqt

http://d.hatena.ne.jp/QtCoder/20111107/1320766981 (Mac用アプリをリリースする トラブルといえば、Mac用アプリを作るには macdeployqt を使うのが一般的のようですが、以前、何処かしらのタイミングで 「Leopard と SnowLeopard でアプリが動かなくなる」…

Qt 4.8.1

いつまでもQt4.7.4を使い続けるのもアレかなと思い、"Maintain Qt SDK" でQt4.8.1に差し替えてみました。Windows版は既存のコードで問題なくビルドできましたが、Mac版でのビルドは思うように行きませんでした。 Qtシミュレータ? あれ、今までQtシミュレー…

Qtを使ってアプリを開発しました (Mac/Win両対応)

App

http://firealpaca.com/昨年の春頃にQt/QtCreatorを調査し始めて、昨年末にリリースしました。お陰様で、多くの方にダウンロード・使用して頂いています。これも何より、Qtの生産性と設計の素晴らしさのお陰です! Qt万歳!当時を思い出すと、最初に取り掛か…

Macだと arguments が渡ってこない

アプリケーションにファイルをDrag&Dropする場合、Windowsだと以下のコードでパラメータを取得できるのですが、Macだと何も渡ってこないようです。MacOSネイティブなAPIを呼ぶ必要がありそうで大変そうです。何か良い方法はないものでしょうか……。 QStringLi…

QtCreatorでValgrindを使うとクラッシュする

QtCreatorには、メモリ解析ツールValgrindが統合されていますが、どうも自分が使った限り、新規作成したプロジェクトを解析するだけでもクラッシュしてしまいます。ValgrindはWindowsでは使えないようなので、Mac版のQtCreatorで試してみました。 1. Valgrin…

DockWidget の paintEvent

DockWidgetを継承したクラスで paintEvent を実装し、 QPainter painter( this ); painter.drawRect( .... ) という形で描画を行うと、floating状態だとクライアント内に描画が行われますが、dock状態だとタイトル部分に描画が重なってしまいます。なので、Q…

IMEを無効にできない

IMEが有効になっていると、keyPressEventが来なくなるようです。IMEを無効にするには、 setAttribute( Qt::WA_InputMethodEnabled, false ); http://doc.qt.nokia.com/latest/qt.html#WidgetAttribute-enumで良さそうに見えるんですが、さっぱり無効化してく…

Macでの不具合? (3)

不具合なのか仕様なのか分かりませんが、ついでに(笑)。MacでのDockWidgetは、Dock状態の時の Widget のリサイズがし辛いですね。ウィンドウ境界上にカーソルが来た時に、リサイズ用のカーソルに変化してくれない事が多いです。Windows版のように、きちん…

Macでの不具合? (2)

MainWindow でアプリを新規作成し、ビルドしてアプリを起動します。MainWindow上でマウス操作 (ぐるぐる円を描くなど) をするだけで、CPUの負荷が5〜6%まで上がります (最新のMacBook Air調べ)。Windowsでは無いことなので、Mac固有の現象なんでしょう。ちょ…