wahrscheinlich einfache, aber anscheinend spezielle frage:
ich möchte eine größere anzahl buttons haben, die "an" oder "aus" sein können. hierzu weise ich per qss im falle von Qmeinbutton::checked ein anderes borderimage zu.
das klappt soweit auch prima!
ihren "checked"-status sollen sie jetzt aber aus einem bitmuster (array von int's) beziehen, damit beim neuzeichnen der gesamten gui alles auf einmal passt
also habe ich von qpushbutton aus eine neue klasse gemacht und eigene isChecked und setChecked -funktionen geschrieben.
anscheinend holt sich die paint-routine den status aber woanders her, denn obwohl ich mal "return false" hartgecodet habe, lassen sich die buttons "toggeln", bzw. wenn ich die bits vorher selber auf "1" setze (muster[0]=0xFF), sind sie trotzdem nicht checked.
.h:
Code: Alles auswählen
class QMeinButton : public QPushButton
{
Q_OBJECT
Q_PROPERTY(bool checked READ isChecked WRITE setChecked)
public:
QMeinButton(char* text=0, int stopnum=0, QWidget *parent=0);
bool isChecked() const;
void setChecked(bool);
private:
int absnum;
};
Code: Alles auswählen
int muster[10];
QMeinButton::QMeinButton(char* text, int absnum, QWidget *parent) :
QPushButton(text)
{
this->absnum = absnum;
setCheckable(true);
}
bool QMeinButton::isChecked() const
{
int bytenum = absnum >> 5;
int bitnum = absnum & 0b11111;
//return IsBit(muster[bytenum], bitnum);
return false;
}
void QMeinButton::setChecked(bool status)
{
int bytenum = absnum >> 5;
int bitnum = absnum & 0b11111;
if(status)
sbi(muster[bytenum], bitnum);
else
cbi(muster[bytenum], bitnum);
}
wo holt sich paintEvent den wirklichen status her, und wie kann ich den beeinflussen?
oder muss ich etwa ein komplettes paintEvent schreiben? eigentlich funktioniert das ja so, wie es soll...
ich stelle mir das ein bisschen so vor wie bei einer model-basierten tabelle, wenn der vergleich nicht hinkt...
danke schonmal, ich hoffe, ich habe mich klar ausgedrückt