Qtプログラミング – SplashScreen、スプレッドシート根幹
津路です。
今回は、スプラッシュスクリーンを実装します。
最初は、QPixmapにpngを取り込んで、QSplashScreenの実体を作成します。
1 2 3 | QPixmap pixmap("splash.png"); QSplashScreen splash(pixmap); splash.show(); |
このままですと、show()を呼んでも何も表示されないので、
app.processEvents();
を呼んで、イベント処理をさせます。
そのあと、QThreadのsleep関数を呼んでみようとしましたが、コンパイルできません。
static void sleep() はprotectedでエラーとなります。
そこで、重い処理をしてみました。
for(long i=0;i<100000;i++) qDebug() <<i;
qDebug() は、iの値を出力します。
1 2 3 | MainWindow mainWin; mainWin.show(); splash.finish(&mainWin); |
また、スプラッシュスクリーンの右上にメッセージを表示するには、showMessageを呼びます。
1 2 | Qt::Alignment topRight = Qt::AlignRight | Qt::AlignTop; splash.showMessage(QObject::tr("Setting up the main window..."),topRight,Qt::white); |
次に、前回までで作成したmainwindowの中心に座すスプレッドシートを作成します。
このクラスは、QTableWidget から派生させます。
1 2 3 4 5 6 7 | class Spreadsheet : public QTableWidget { Q_OBJECT public: Spreadsheet(QWidget *parent = 0); void clear(); }; |
clear関数は、シートを初期化します。
クラスの実装では、このclear関数を実装します。
1行1列だけのシートです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <QtGui> //#include "cell.h" #include "spreadsheet.h" Spreadsheet::Spreadsheet(QWidget *parent) : QTableWidget(parent) { clear(); } void Spreadsheet::clear() { setRowCount(0); for(int i=0; i<1; ++i) { QTableWidgetItem *item = new QTableWidgetItem; item->setText(QString(QChar('A'+i))); setHorizontalHeaderItem(i,item); } setCurrentCell(0,0); } |