大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

Qtプログラミング – SplashScreen、スプレッドシート根幹

株式会社クローバーフィールドの経営理念
著者:津路高広
公開日:2019/09/30
最終更新日:2019/10/15
カテゴリー:技術情報

津路です。
今回は、スプラッシュスクリーンを実装します。

最初は、QPixmapにpngを取り込んで、QSplashScreenの実体を作成します。

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の値を出力します。

MainWindow mainWin;
mainWin.show();
splash.finish(&mainWin);

また、スプラッシュスクリーンの右上にメッセージを表示するには、showMessageを呼びます。

Qt::Alignment topRight = Qt::AlignRight | Qt::AlignTop;
splash.showMessage(QObject::tr("Setting up the main window..."),topRight,Qt::white);

次に、前回までで作成したmainwindowの中心に座すスプレッドシートを作成します。
このクラスは、QTableWidget から派生させます。

class Spreadsheet : public QTableWidget
{
    Q_OBJECT
public:
    Spreadsheet(QWidget *parent = 0);
    void clear();
};

clear関数は、シートを初期化します。
クラスの実装では、このclear関数を実装します。
1行1列だけのシートです。

#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);
}

すると、以下のような画面となります。

    上に戻る