Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: izoomer от Январь 29, 2007, 18:47



Название: передача указателя на вызваашее ошибку окно
Отправлено: izoomer от Январь 29, 2007, 18:47
[qt-4.2.0 Linux]
я вот использую qInstallMsgHandler
Код:

#include <QApplication>
#include <QWidget>
#include <QTextCodec>
#include "mainwindow.h"

void myMessageOutput(QtMsgType type, const char *msg)
 {
    // в этом методе вызываем окно с ошибкой
 }

int main(int argc, char *argv[])
{
   qInstallMsgHandler(myMessageOutput);
   QApplication app(argc, argv);
   
   QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
   
   MainWindow window;
   window.resize(800, 600);
   window.clearFocus();
   window.setWindowFlags(Qt::Window | Qt::X11BypassWindowManagerHint);
              window.showFullScreen();
   return app.exec();
}


только соответственно по ошибке будет окно выскакивать и затемнятся (осветляться) задний план (виджет window в моем случае) таким методом (спасибо Dendy)
Код:

QPixmap px = QPixmap::grabWidget( very_main_window );
QPainter p( &px );
p.setBrush( QColor( 255, 255, 255, 127 ) ); // highligh a bit
p.setPen( Qt::NoPen );
p.drawRect( px.rect() );
p.end();

 ... только как знать что грабить в QPixmap::grabWidget .... ? как в моем коде передать в обработчик ошибки что нужно грабить MainWindow window и его затемнять ?


Название: передача указателя на вызваашее ошибку окно
Отправлено: nova от Январь 29, 2007, 22:01
Вообщето для твоей задачи лучше исользовать QMessageBox.
А qInstallMsgHandler используется для отладочных целей, например запись этих сообщений а лог файл.