1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
#include <QtGui>
#include "nowywpis.h"
NowyWpis::NowyWpis(QWidget *parent)
: QWidget(parent)
{
Layout = new QVBoxLayout;
wybortr = new QGroupBox(tr("Wybor Tr"));
dane = new QGroupBox(tr("Dane"));
buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok| QDialogButtonBox::Cancel);
connect(buttonBox, SIGNAL(accepted()), this, SLOT(Dodaj()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(Anuluj()));
QGridLayout *grid = new QGridLayout;
wybierztr = new QComboBox;
wypiszal();
foreach (QString klucz, ListaAl)
{
wybierztr->addItem(klucz);
}
connect(wybierztr, SIGNAL(currentIndexChanged(int)),this, SLOT(AktualTr()));
ikonatyp = new QLabel();
connect(wybierztr, SIGNAL(currentIndexChanged(int)),this, SLOT(AktualIkone()));
connect(wybierztr, SIGNAL(currentIndexChanged(int)),this, SLOT(AktualAtr()));
grid->addWidget(wybierztr, 0, 0);
grid->addWidget(ikonatyp, 0, 1);
wybortr->setLayout(grid);
AktualLayout(Layout);
setWindowTitle(tr("Dodaj nowy wpis"));
resize(800, 600);
}
void NowyWpis::AktualLayout(QVBoxLayout *Lay)
{
//////////////////this creates Microsoft Visual C++ Library error “This application has requested the Runtime to terminate it in an unusual way.”//////////////////////////////
/* while (Lay->count()>0)
{
QWidget *widget = Lay->itemAt(0)->widget();
Lay->removeWidget(widget);
delete widget;
}
////////////////////////////////////////////////////////////////////*/ Lay->addWidget(wybortr);
Lay->addWidget(dane);
Lay->addWidget(buttonBox);
setLayout(Lay);
}
void NowyWpis::AktualTr()
{
wybranytr =(wybierztr->currentText());
}
void NowyWpis::AktualIkone()
{
ikonatyp->setAlignment(Qt::AlignBottom | Qt::AlignRight);
ikonatyp->setPixmap(QPixmap("Obrazy/Tr/"+wybranytr+".png"));
}
void NowyWpis::AktualAtr()
{
QGridLayout *siatka = new QGridLayout;
ListaDanych.clear();
while (siatka->count()>0)
{
QWidget *widget = siatka->itemAt(0)->widget();
siatka->removeWidget(widget);
delete widget;
}
wypiszatr(wybranytr);
foreach (QString atrybut, ListaAtr)
{
wpis.Combowart = new QComboBox;
wpis.nazwaatr = new QLabel;
wypiszwart(atrybut);
wpis.nazwaatr->setText(atrybut);
foreach (QString wartosc, ListaWart)
{
wpis.Combowart->addItem(wartosc);
wpis.Combowart->setEditable(true);
};
ListaDanych.append(wpis);
};
int i=0;
foreach (parametr atr, ListaDanych)
{
siatka->addWidget(atr.nazwaatr, i, 0);
siatka->addWidget(atr.Combowart, i, 1);
i++;
};
ikonawpis = new QToolButton();
ikonawpis->setIconSize(rozmiar);
connect(ikonawpis, SIGNAL(clicked()), this, SLOT(WybierzIkoneWpis()));
siatka->addWidget(ikonawpis, 0, 2, 2, 1);
dane->setLayout(siatka);
AktualLayout(Layout);
}
void NowyWpis::WybierzIkoneWpis()
{
chooseImage(tr("Wybierz ikone"), &sourceikonawpis, ikonawpis);
}
void NowyWpis::chooseImage(const QString &nazwa, QImage *obraz, QToolButton *przycisk)
{
QString plik = QFileDialog::getOpenFileName(this, nazwa);
if (!plik.isEmpty())
loadImage(plik, obraz, przycisk);
}
void NowyWpis::loadImage(const QString &plik, QImage *obraz, QToolButton *przycisk)
{
obraz->load(plik);
*obraz = obraz->scaled(rozmiar, Qt::KeepAspectRatio);
QImage obraz2(rozmiar, QImage::Format_ARGB32_Premultiplied);
QPainter painter(&obraz2);
painter.drawImage(imagePos(*obraz), *obraz);
painter.end();
przycisk->setIcon(QPixmap::fromImage(obraz2));
*obraz = obraz2;
}
QPoint NowyWpis::imagePos(const QImage &obraz) const
{
return QPoint((rozmiar.width()-obraz.width())/2,(rozmiar.height()-obraz.height())/2);
}
void NowyWpis::Dodaj()
{
}
void NowyWpis::Anuluj()
{
}
|