From e0ab96513f3b1d23a7816448658cfad0e2d4052a Mon Sep 17 00:00:00 2001 From: jorenchik Date: Sat, 7 Sep 2024 19:16:53 +0300 Subject: [PATCH] mdem element with hidable answer box --- src/mdemory-app-qt/main.go | 86 ++++++++++++++++++++++++++++---------- 1 file changed, 64 insertions(+), 22 deletions(-) diff --git a/src/mdemory-app-qt/main.go b/src/mdemory-app-qt/main.go index cdde790..84b4fa9 100644 --- a/src/mdemory-app-qt/main.go +++ b/src/mdemory-app-qt/main.go @@ -16,35 +16,77 @@ var workingPath string = "/home/jorenchik/Code/mdemory/memorybase" // widget *widgets.QWidget; // } -func CreateMdem(frontText string) *widgets.QWidget { +func CreateMdem(frontText string, backText string) *widgets.QWidget { // frontText := "What is the capital of Latvia?" // DefineMdem wMdem := widgets.NewQWidget(nil, 0) - wMdem.SetMinimumHeight(60) - hMdem := widgets.NewQHBoxLayout() - wMdem.SetLayout(hMdem) + vMdem := widgets.NewQVBoxLayout() - // DefineId + wMdem.SetLayout(vMdem) id := fmt.Sprintf("mdem_%d", 1) wMdem.SetObjectName(id) - wMdem.SetStyleSheet(fmt.Sprintf(` - QWidget#%s { - border: 1px solid gray; - background: white; - } - `, id)) - // AddContent - mdemText := widgets.NewQLabel2(frontText, nil, 0) - hMdem.AddWidget(mdemText, 0, 0) - hMdem.AddStretch(1) + // InitFront + wFront := widgets.NewQWidget(nil, 0) + hFront := widgets.NewQHBoxLayout() + wFront.SetMinimumHeight(60) + wFront.SetLayout(hFront) + wFront.SetProperty("first", core.NewQVariant1(true)); + wMdem.SetStyleSheet(fmt.Sprintf(` + QWidget#%s > QWidget { + border-right: 1px solid gray; + border-bottom: 1px solid gray; + border-left: 1px solid gray; + } + QWidget#%s > QWidget[first="true"] { + border-top: 1px solid gray; + } + `, id, id)) + + // AddFrontContent + elFrontText := widgets.NewQLabel2(frontText, nil, 0) + hFront.AddWidget(elFrontText, 0, 0) + hFront.AddStretch(1) hideButton := widgets.NewQToolButton(nil) showAnswer := widgets.NewQToolButton(nil) hideButton.SetText("Hide") showAnswer.SetText("Show") - hMdem.AddWidget(hideButton, 0, 0) - hMdem.AddWidget(showAnswer, 0, 0) + hFront.AddWidget(hideButton, 0, 0) + hFront.AddWidget(showAnswer, 0, 0) + + wBack := widgets.NewQWidget(nil, 0) + hBack := widgets.NewQVBoxLayout() + // wBack.SetMinimumHeight(60) + wBack.SetLayout(hBack) + + vMdem.AddWidget(wBack, 0, 0) + // AddBackContent + elBackText := widgets.NewQLabel2( + fmt.Sprintf("- %s", backText), + nil, + 0, + ) + hBack.AddWidget(elBackText, 0, 0) + hBack.AddStretch(1) + + vMdem.AddWidget(wFront, 0, 0) + vMdem.AddWidget(wBack, 0, 0) + vMdem.SetContentsMargins(0,0,0,0) + vMdem.SetSpacing(0) + + + wBack.Hide() + hideButton.ConnectClicked(func(checked bool) { + if wBack.IsVisible() { + wBack.Hide() + } + }) + showAnswer.ConnectClicked(func(checked bool) { + if !wBack.IsVisible() { + wBack.Show() + } + }) return wMdem } @@ -139,19 +181,19 @@ func main() { // CreateMdems var mdems []*widgets.QWidget mdems = append( - mdems, CreateMdem("What is the capital of Latvia?"), + mdems, CreateMdem("What is the capital of Latvia?", "Riga"), ) mdems = append( - mdems, CreateMdem("What is the capital of Estonia?"), + mdems, CreateMdem("What is the capital of Estonia?", "Tallin"), ) mdems = append( - mdems, CreateMdem("What is the capital of Lithuania?"), + mdems, CreateMdem("What is the capital of Lithuania?", "Vilnius"), ) mdems = append( - mdems, CreateMdem("What is the capital of Croatia?"), + mdems, CreateMdem("What is the capital of Croatia?", "Zagreb"), ) mdems = append( - mdems, CreateMdem("What is the capital of Chechia?"), + mdems, CreateMdem("What is the capital of Chechia?", "Prague"), ) for i := 0; i < len(mdems); i++ { hMdemScroll.AddWidget(mdems[i], 0, 0)