Problem mit QFrame
Verfasst: 16. Februar 2011 18:19
Hallo!
Ich habe folgende Aufgabenstellung:
Ein QFrame soll ein einzelnes Feld darstellen, in dem eine Zahl eingetragen werden soll. Bei einem Mausklick auf den Frame soll dieser den Fokus erhalten und dabei einen Rahmen gezeichnet bekommen (um zu erkennen, dass er fokussiert ist).
Sobald also der Fokus auf dem Frame liegt, soll man mit der Tastatur eine Zahl eingeben können.
Ich bin soweit, dass ich den Frame habe und zunächst über das paintEvent mit einer 0 beschrifte (sodass also gleich bei Programmstart eine 0 im Frame steht).
An dieser Stelle komme ich nun nicht weiter.
Vor allem, da QFrame kein click-Event hat und man das (soweit ich weiß) über ein Mouse-Event implementieren muss.
Wie genau kann ich also mit einem Mausklick den Fokus auf den Frame setzen und dabei einen Rahmen im Frame zeichnen lassen?
Das ist meine Sudokucell.h:
Das ist die Sudokucell.cpp:
Und hier noch meine main.cpp:
Die X im Kommentar kennzeichnen einfach nur, dass ich nicht weiß, welches Signal ich da nehmen muss.
Ich habe folgende Aufgabenstellung:
Ein QFrame soll ein einzelnes Feld darstellen, in dem eine Zahl eingetragen werden soll. Bei einem Mausklick auf den Frame soll dieser den Fokus erhalten und dabei einen Rahmen gezeichnet bekommen (um zu erkennen, dass er fokussiert ist).
Sobald also der Fokus auf dem Frame liegt, soll man mit der Tastatur eine Zahl eingeben können.
Ich bin soweit, dass ich den Frame habe und zunächst über das paintEvent mit einer 0 beschrifte (sodass also gleich bei Programmstart eine 0 im Frame steht).
An dieser Stelle komme ich nun nicht weiter.
Vor allem, da QFrame kein click-Event hat und man das (soweit ich weiß) über ein Mouse-Event implementieren muss.
Wie genau kann ich also mit einem Mausklick den Fokus auf den Frame setzen und dabei einen Rahmen im Frame zeichnen lassen?
Das ist meine Sudokucell.h:
Code: Alles auswählen
#pragma once
#include <QtGui>
class Sudokucell : public QFrame
{
Q_OBJECT;
public:
Sudokucell(QWidget *parent=0) : QFrame(parent), _isFilled(false), _prefilled(false), _solution(1), _currentValue(1){}
public slots:
private:
bool _isFilled;
bool _prefilled;
int _solution;
int _currentValue;
protected:
void paintEvent(QPaintEvent *event);
};Code: Alles auswählen
#include "sudokucell.h"
void Sudokucell::paintEvent(QPaintEvent*)
{
QPainter painter(this);
painter.drawText(rect(), "0");
}Code: Alles auswählen
#include "sudokucell.h"
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
Sudokucell *cell = new Sudokucell();
cell->show();
cell->resize(100,100);
cell->setFont(QFont("Arial", 70));
cell->setWindowTitle("Cell");
//QObject::connect(X,SIGNAL(X()),cell,SLOT(setFocus()));
app.exec();
return 0;
}