Аватар для Simply me
244 / 37 / 8
Регистрация: 05.05.2012
Сообщений: 521

Диалог в Qt Designer

12.09.2020, 14:30. Показов 4152. Ответов 24

Студворк — интернет-сервис помощи студентам
Добрый день! Помогите, пожалуйста! Создала в Qt Designer диалог. Назвала файл Ui_My_dialog_ui.ui. В коде создала для него класс My_dialog. В классе MyWidget в функции func_dialog создаю объект класса My_dialog.

1)​Как исправить, что после закрытия окна диалога, всё приложение закрывается с ошибкой (Process finished with exit code -1073741819 (0xC0000005))?

2)​Как сделать, чтобы когда нажимаешь на кнопку в диалоге, вызывалась функция func_with_par и ей передавалось значение self._my_value?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class MyWidget(..):
 
def func_with_par(self, par):
    …
 
def func_dialog(self):
    dialog_wgt = My_dialog()
    self._my_value = dialog_wgt.ui…     dialog_wgt.ui.myButton.clicked.connect(self.func_with_par)
    dialog_wgt.exec()
 
class My_dialog():
    def init(self):
        super().__init__()
        self._setup_ui()
 
    def _setup_ui(self):
        self.ui = Ui_My_dialog()
        self.ui.setupUi(self)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.09.2020, 14:30
Ответы с готовыми решениями:

PyQt5: в Qt Designer Диалог открытия и сохранения файлов?
Добрый день! Есть ли в PyQt5 в Qt Designer Диалог открытия и сохранения файлов? Или нужно отдельно его добавлять?

Qt Designer и диалог правки стилей
Можно ли как нибудь сделать сделать диалог таблицы стилей сделать не модальным?

Digital Designer / Interface Designer for top company in Munich / Germany. Non EU applicants very welcome, we sponsor Visa!
Digital Designer / Interface Designer (Web, Mobile & Tablet) Digital Designer needed to join popular digital agency based in Munich -...

24
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
12.09.2020, 14:58
Simply me, скопипасть сюда код целиком, без всяких сомнительных сокращений.
0
 Аватар для Simply me
244 / 37 / 8
Регистрация: 05.05.2012
Сообщений: 521
12.09.2020, 17:01  [ТС]
Там в проекте больше 100 файлов. Мне кажется, всё, что имеет значение, я оставила.

Просто принцип хочу понять, как сделать, чтобы после завершения функции, в которой создается объект диалога, после закрытия этого диалога всё приложение не вылетало.

И если в диалоге пользователь ввел значение и нажал кнопку, то как передать это значение в функцию, которая вызывается по кнопке.
0
 Аватар для Simply me
244 / 37 / 8
Регистрация: 05.05.2012
Сообщений: 521
13.09.2020, 06:36  [ТС]
Сократила немного код. Функцию func_dialog и класс My_dialog полностью привожу. Скажите, пожалуйста, как исправить, чтобы при закрытии диалога приложение не вылетало с ошибкой.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
class MyWidget(..):
    def func_dialog(self):
        dialog_wgt = My_dialog()
        dialog_wgt.exec()
 
class My_dialog(QDialog):
    def init(self):
        super().__init__()
        self._setup_ui()
 
    def _setup_ui(self):
        self.ui = Ui_My_dialog()
        self.ui.setupUi(self)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
13.09.2020, 08:49
Это что?
0
 Аватар для Simply me
244 / 37 / 8
Регистрация: 05.05.2012
Сообщений: 521
13.09.2020, 12:00  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Это что?
Отнаследован от наследника QtGui.QWidget. Ну можно считать, что от самого QtGui.QWidget. С этим наследником всё нормально.
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
13.09.2020, 12:39
Цитата Сообщение от Simply me Посмотреть сообщение
Просто принцип хочу понять, как сделать, чтобы после завершения функции, в которой создается объект диалога, после закрытия этого диалога всё приложение не вылетало.
И если в диалоге пользователь ввел значение и нажал кнопку, то как передать это значение в функцию, которая вызывается по кнопке.
Python
1
2
3
    d = QInputDialog()
    ret = d.exec()
    print(ret,d.textValue())
Добавлено через 14 минут
вот пример диалога
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Dialog(QDialog):
    def __init__(self,parent=None):
        super().__init__(parent)
        self.edit = QTextEdit()
        self.btnOk = QPushButton('Ok')
        self.btnCancel = QPushButton('Cancel')
        grid = QGridLayout(self)
        grid.setContentsMargins(0,0,0,0)
        grid.addWidget(self.edit,0,0,4,4)
        grid.addWidget(self.btnOk,4,0,1,1)
        grid.addWidget(self.btnCancel,4,1,1,1)
        self.btnOk.clicked.connect(self.accept)
        self.btnCancel.clicked.connect(self.reject)
        
    def getText(self):
        return self.edit.toPlainText()
 
if __name__ == '__main__':
    app = QApplication([])
    d = Dialog()
    ret = d.exec()
    print(ret,d.getText())
1
 Аватар для Simply me
244 / 37 / 8
Регистрация: 05.05.2012
Сообщений: 521
13.09.2020, 13:48  [ТС]
У меня форма диалога создается в Qt Designer. В коде для него есть класс, в котором вызываю setupUi. Диалог создается в функции класса MyWidget и существует, пока выполняется эта функция. Не знаю, как передать значение из диалога в другую функцию класса MyWidget, даже если сначала сохранить его в поле класса MyWidget. И не знаю, как сделать, чтобы приложение не закрывалось, когда диалог закрываю.

И в Вашем примере d.exec() = 1, а у меня dialog_wgt.exec() = 0
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
13.09.2020, 17:15
1 - Ok, 0 - Cancel стандартно. сохранение - getText() в моем примере
0
 Аватар для Simply me
244 / 37 / 8
Регистрация: 05.05.2012
Сообщений: 521
13.09.2020, 18:49  [ТС]
Сейчас просто открыла Qt Designer, выбрала один из виджетов, предлагаемых по умолчанию, ничего вообще не меняла, сохранила. В классе My_dialog в функции setup_ui поменяла имя как objectName в файле ui. Тоже самое: когда закрыла окно диалога, приложение завершилось с ошибкой. Не знаю, как создать диалог в функции
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
13.09.2020, 23:00
открываю дизайнер, делаю диалог - получаю ui файл.
делаю
pyuic5 dlg.ui -o dlg.py
получаю py файл
чота вы путаете
dlg.ui
XML
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
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Dialog</class>
 <widget class="QDialog" name="Dialog">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>481</width>
    <height>340</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="0" column="0">
    <widget class="QPlainTextEdit" name="plainTextEdit"/>
   </item>
   <item row="1" column="0">
    <widget class="QDialogButtonBox" name="buttonBox">
     <property name="orientation">
      <enum>Qt::Horizontal</enum>
     </property>
     <property name="standardButtons">
      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
     </property>
    </widget>
   </item>
  </layout>
 </widget>
 <resources/>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>Dialog</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>248</x>
     <y>254</y>
    </hint>
    <hint type="destinationlabel">
     <x>157</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>Dialog</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>316</x>
     <y>260</y>
    </hint>
    <hint type="destinationlabel">
     <x>286</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>
dlg.py
Python
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
# -*- coding: utf-8 -*-
 
# Form implementation generated from reading ui file 'dlg.ui'
#
# Created by: PyQt5 UI code generator 5.14.0
#
# WARNING! All changes made in this file will be lost!
 
 
from PyQt5 import QtCore, QtGui, QtWidgets
 
 
class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(481, 340)
        self.gridLayout = QtWidgets.QGridLayout(Dialog)
        self.gridLayout.setObjectName("gridLayout")
        self.plainTextEdit = QtWidgets.QPlainTextEdit(Dialog)
        self.plainTextEdit.setObjectName("plainTextEdit")
        self.gridLayout.addWidget(self.plainTextEdit, 0, 0, 1, 1)
        self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.gridLayout.addWidget(self.buttonBox, 1, 0, 1, 1)
 
        self.retranslateUi(Dialog)
        self.buttonBox.accepted.connect(Dialog.accept)
        self.buttonBox.rejected.connect(Dialog.reject)
        QtCore.QMetaObject.connectSlotsByName(Dialog)
 
    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
 
 
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())
1
290 / 205 / 68
Регистрация: 18.09.2019
Сообщений: 407
Записей в блоге: 58
14.09.2020, 00:19
Может быть это вам поможет?
Хлтя, конечно, не Qt Designer, но всё-таки даёт представление о том, каким образом можно вернуть из функции изменённые в диалоге параметры

Python
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
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
 
def customSetParam(client, volume: int):
    customDialog = probeDialog(client, volume)
    customDialog.exec()
    return int(customDialog.pVolume)
 
 
class probeDialog(QDialog):
    def __init__(self, parent=None, volume=0):
        super(probeDialog, self).__init__(parent)
        self.pVolume = str(volume)
        self.initUI()
 
    def initUI(self):
        self.setWindowTitle("Введите")
        nameParam = QLabel("Параметр")
        self.valueParam = QLineEdit()
        self.valueParam.setInputMask("999999")
        self.valueParam.setText(self.pVolume)
        saveButton = QPushButton("Сохранить и выйти")
        exitButton = QPushButton("Выйти без сохранения")
 
        hbox1 = QHBoxLayout()
        hbox1.addWidget(nameParam)
        hbox1.addWidget(self.valueParam)
 
        hbox2 = QHBoxLayout()
        hbox2.addWidget(saveButton)
        hbox2.addWidget(exitButton)
 
        mainLayout = QVBoxLayout()
        mainLayout.setSpacing(6)
        mainLayout.addLayout(hbox1)
        mainLayout.addStretch(1)
        mainLayout.addLayout(hbox2)
 
        self.setLayout(mainLayout)
 
        saveButton.clicked.connect(self.to_save)
        exitButton.clicked.connect(self.to_exit)
 
    def to_save(self):
        self.pVolume = self.valueParam.text()
        self.close()
 
    def to_exit(self):
        self.close()
 
 
class probeMainWindow(QMainWindow):
    def __init__(self, parent=None):
        super().__init__()
        self.currentParam = 0
        self.initUI()
 
    def initUI(self):
        screen = QDesktopWidget().availableGeometry()
        self.setGeometry(int(screen.width()/4), int(screen.height()/4),
                         int(screen.width()/2), int(screen.height()/2))
 
        self.setWindowTitle("The Dialog Probe v0.001")
        self.statusBar()
 
        exitAction = QAction("Выйти", self, shortcut="Ctrl+Q",
                             triggered=self.to_close, enabled=True)
        setAction = QAction("Параметры", self,
                            triggered=self.to_set, enabled=True)
 
        taskMenu = self.menuBar().addMenu("Задачи")
        taskMenu.addAction(exitAction)
        taskMenu.addAction(setAction)
 
    def to_close(self):
        self.close()
 
    def to_set(self):
        self.currentParam = customSetParam(self, self.currentParam)
 
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainWin = probeMainWindow()
    mainWin.show()
    sys.exit(app.exec_())
1
 Аватар для Simply me
244 / 37 / 8
Регистрация: 05.05.2012
Сообщений: 521
14.09.2020, 06:38  [ТС]
iamvic, спасибо. Попробую, когда приложение перестанет падать.

vic5710, спасибо. У Вас диалог создается в блоке if __name__ == "__main__". Если Вы в блоке if __name__ == "__main__ создадите любой другой виджет (можно не в дизайнере), у которого будет кнопка (или пункт меню), при нажатии на которую (который) будет вызываться функция и в ней будет создаваться диалог из дизайнера, при закрытии диалога у Вас будет падать всё приложение?
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
14.09.2020, 08:10
Simply me,

1) Не использовать QtDesigner.
2) Чтобы передать данные в другой виджет, можно использовать сигналы или атрибуты класса.
3) Для вызова функции с каким то определенным параметром через события, можно использовать слоты, либо лямбды.
1
290 / 205 / 68
Регистрация: 18.09.2019
Сообщений: 407
Записей в блоге: 58
14.09.2020, 08:17
Остаётся только пожелать вам удачи. Понятно, что вы не можете раскрыть чувствительную информацию о реальном проекте. Ну сляпайте вместе c Qt Designer-ом какую-нибудь левую демонстраху с таким же эффектом, чтобы можно было понять, что происходит-то.
Ведь ошибочка-то 0xC0000005 весьма неприятная - STATUS ACCESS VIOLATION называется в терминах Microsoft. Добиться её в этом паровозе приложение->python->PyQt->Qt->ОС весьма непросто, надо сделать что-то уж совсем запредельное. Ну и при возникновении такого рода ошибок неплохо было озвучивать версии ОС, Qt, PyQt и python, чтобы как-то сориентировать людей о своём окружении.
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
14.09.2020, 08:24
DmFat верно сказал - зачем использовать дизайнер, если там элементарнейший диалог? Вручную и наглядней, и наверняка, и лишнего файла не надо...
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
14.09.2020, 08:29
iSmokeJC, да даже если это огромное окно с 1.000 кнопок, я не вижу вообще смысл использовать дизайнер, во первых - код просто становится не читабельный если конвертировать из *.ui в *.py, во вторых - это лишние файлы, в третьих - понять что, где и как работает будет вызывать панические атаки и истерический смех.
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
14.09.2020, 08:38
DmFat, согласен

Добавлено через 1 минуту
Просто привыкли к формошлепству, как в дельфях и шарпах разных, вот и результат.

Добавлено через 4 минуты
Кстати о птичках.
Если по уму, в дизайнере можно создать вполне самодостаточную форму, не требующую привязанного класса. Достаточно в каком-либо своем классе-наследнике от QObject приконнектиться и отлавливать нужное слотом.


Добавлено через 1 минуту
Цитата Сообщение от iSmokeJC Посмотреть сообщение
не требующую привязанного класса
Я имел ввиду именно то, что сейчас делает ТС
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
14.09.2020, 11:42
Цитата Сообщение от Simply me Посмотреть сообщение
Если Вы в блоке if __name__ == "__main__ создадите любой другой виджет (можно не в дизайнере), у которого будет кнопка (или пункт меню), при нажатии на которую (который) будет вызываться функция и в ней будет создаваться диалог из дизайнера, при закрытии диалога у Вас будет падать всё приложение?
ничего не падает
Python
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
class Dialog(QDialog):
    def __init__(self,parent=None):
        super().__init__(parent)
        self.edit = QTextEdit()
        self.btnOk = QPushButton('Ok')
        self.btnCancel = QPushButton('Cancel')
        grid = QGridLayout(self)
        grid.setContentsMargins(0,0,0,0)
        grid.addWidget(self.edit,0,0,4,4)
        grid.addWidget(self.btnOk,4,0,1,1)
        grid.addWidget(self.btnCancel,4,1,1,1)
        self.btnOk.clicked.connect(self.accept)
        self.btnCancel.clicked.connect(self.reject)
        
    def getText(self):
        return self.edit.toPlainText()
        
class W(QWidget):
    def __init__(self):
        super().__init__()
        btn = QPushButton('Click',self)
        btn.clicked.connect(self.on_click)
    def on_click(self):
        d= Dialog()
        ret = d.exec()
        print(ret,d.getText())
 
if __name__ == '__main__':
    app = QApplication([])
    w = W()
    w.show()
    app.exec_()
1
290 / 205 / 68
Регистрация: 18.09.2019
Сообщений: 407
Записей в блоге: 58
14.09.2020, 15:12
А вот сама идея - вызывать диалог в отдельной посторонней функции и потом вытрясывать из него отредактированные параметры - она правильная? Может лучше сделать функцию класса, наподобии QMessageBox.critical() и прочих public static members, тем более класс-то диалога самописный. Ну, потребуется кому-нибудь изменить значение параметра, дёрнет он эту функцию класса... и всё красиво, всё внутри класса. И только новое значение наружу вылетает, которое вызвавший может засунуть туда куда ему надо.
Python
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
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
 
class probeDialog(QDialog):
    def __init__(self, parent=None, volume=0):
        super(probeDialog, self).__init__(parent)
        self.pVolume = str(volume)
        self.initUI()
 
    def initUI(self):
        self.setWindowTitle("Введите")
        nameParam = QLabel("Параметр")
        self.valueParam = QLineEdit()
        self.valueParam.setInputMask("999999")
        self.valueParam.setText(self.pVolume)
        self.valueParam.setCursorPosition(0)
        saveButton = QPushButton("Сохранить и выйти")
        exitButton = QPushButton("Выйти без сохранения")
 
        hbox1 = QHBoxLayout()
        hbox1.addWidget(nameParam)
        hbox1.addWidget(self.valueParam)
 
        hbox2 = QHBoxLayout()
        hbox2.addWidget(saveButton)
        hbox2.addWidget(exitButton)
 
        mainLayout = QVBoxLayout()
        mainLayout.setSpacing(6)
        mainLayout.addLayout(hbox1)
        mainLayout.addStretch(1)
        mainLayout.addLayout(hbox2)
 
        self.setLayout(mainLayout)
 
        saveButton.clicked.connect(self.to_save)
        exitButton.clicked.connect(self.to_exit)
 
    def to_save(self):
        self.pVolume = self.valueParam.text().strip()
        if self.pVolume is None or self.pVolume == "":
            self.pVolume = "0"
        self.close()
 
    def to_exit(self):
        self.close()
 
    def probeSetParam(self, pVolume):
        customDialog = probeDialog(self, pVolume)
        customDialog.exec()
        return int(customDialog.pVolume)
 
 
class probeMainWindow(QMainWindow):
    def __init__(self, parent=None):
        super().__init__()
        self.currentParam = 0
        self.initUI()
 
    def initUI(self):
        screen = QDesktopWidget().availableGeometry()
        self.setGeometry(int(screen.width()/4), int(screen.height()/4),
                         int(screen.width()/2), int(screen.height()/2))
 
        self.setWindowTitle("The Dialog Probe v0.002")
        self.statusBar()
 
        exitAction = QAction("Выйти", self, shortcut="Ctrl+Q",
                             triggered=self.to_close, enabled=True)
        setAction = QAction("Параметры", self,
                            triggered=self.to_set, enabled=True)
 
        taskMenu = self.menuBar().addMenu("Задачи")
        taskMenu.addAction(exitAction)
        taskMenu.addAction(setAction)
 
    def to_close(self):
        self.close()
 
    def to_set(self):
        self.currentParam = probeDialog.probeSetParam(self, self.currentParam)
 
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainWin = probeMainWindow()
    mainWin.show()
    sys.exit(app.exec_())
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.09.2020, 15:12
Помогаю со студенческими работами здесь

Как создать диалог выбора шрифта и диалог выбора цвета
как создать диалог выбора шрифта и диалог выбора цвета в wpf

Qt designer
Добрый день.Работаю в Qtdesigner и хочу менять изображения,используя horizontalScrollBar.Подскажите какой метод используется в этом виджете...

Designer
Здравствуйте. В какой версии pyqt есть qt designer или pyqt-tools ? Collecting pyqt5-tools Could not find a version that satisfies...

Qt Designer
У меня вот такой вопрос возник. Я смотрел учебники по Qt и там появился Qt Designer. Так вот сам вопрос ,а есть ли смысл в написании кода...

QT Designer
Здравствуйте всем!!!! Подскажите пожалуйста как можно в Qt строку, введенную пользователем, перевести в символьный массив для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru