Gute Abend,
ja der Name ist ein wenig irre führend aber gut.
Also ich habe eine Parent Klasse die ein Dialog Fenster darstellt. Von der wollte ich nun zwei Klasse erben lassen. Zum einen Info Fenster und zum anderen ein Setting Fenster.
Nun wird in dem Info Fenster der Text wunderschön gerendert, in dem Settingfenster dagegen leider nicht. Ich kann langsam nicht mehr nachvollziehen warum das der Fall ist:
Info Dialog sieht so aus:
Der auskommentierte Teil hat funktioniert und ist nur fürs Deboggen raus geflogen.
|
C-/C++-Quelltext
|
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
|
InfoDialogWindow::InfoDialogWindow(const std::string message, const std::string titel)
: DialogWindow{ titel }
{
/*this->box = sfg::Box::Create(sfg::Box::Orientation::VERTICAL);
this->lable = sfg::Label::Create(formate_string(const_cast<std::string&>(message), 30));
this->button = sfg::Button::Create("OK");
button->GetSignal(sfg::Widget::OnLeftClick).Connect(std::bind(&InfoDialogWindow::CALLBACK_close, this));
box->Pack(lable, false, false);
box->Pack(button);
Add(box);
if (lable->GetRequisition().x <= 400, lable->GetRequisition().y <= 200)
SetRequisition(sf::Vector2f{ lable->GetRequisition().x + 50, lable->GetRequisition().y + 80 });
else
SetRequisition(sf::Vector2f{ 200, 400 });
if (is_ressize())
set_resize(false);*/
Add(sfg::Label::Create("ABD"));
MainClass::add_window(window->operator sfg::Window::Ptr());
}
void InfoDialogWindow::create(const std::string& message, const std::string& titel)
{
DialogWindow* window = new InfoDialogWindow(message, titel);
}
|
Das ganze wird dann so aufgerufen
InfoDialogWindow::create("Test");
Nun das Settingsfenster welches Probleme macht
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
SettingDialogWindow::SettingDialogWindow(std::string title, std::function<void()> save_callback_funktion)
: DialogWindow(title)
{
set_callback(save_callback_funktion);
Add(sfg::Label::Create("ABD"));
MainClass::add_window(operator sfg::Window::Ptr());
}
|
Und wird so Aufgerugen
this->setting_window = std::make_shared<SongObjectSettingDialogWindow>( SongObjectSettingDialogWindow(create_datastruct(), std::bind(&SongObject::refresh_time_lable, this)));
Beide Klassen greifen auf den Selben C-Tor zu der dieser wäre:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
DialogWindow::DialogWindow(const std::string& titel)
{
this->window = sfg::Window::Create(
sfg::Window::Style::TITLEBAR |
sfg::Window::Style::TOPLEVEL |
sfg::Window::Style::BACKGROUND |
sfg::Window::Style::SHADOW);
this->window->SetRequisition(sf::Vector2f{ 100.0f, 100.0f });
this->window->GetSignal(sfg::Window::OnLostFocus).Connect(std::bind(&DialogWindow::CALLBACK_status, this));
SetTitle(titel);
this->scrolledinterface = sfg::ScrolledWindow::Create();
this->scrolledinterface->SetScrollbarPolicy(
sfg::ScrolledWindow::HORIZONTAL_AUTOMATIC |
sfg::ScrolledWindow::VERTICAL_AUTOMATIC);
this->window->Add(this->scrolledinterface);
// Und dies wäre die Add funktion
void DialogWindow::Add(const sfg::Widget::Ptr widget)
{
this->scrolledinterface->AddWithViewport(widget);
}
}
|
Ich wäre sehr sehr froh wenn jemand einen Fehler finden würde. Ich bin langsam am verzweifeln