Задать вопрос
  • Как легко и просто развернуть curl для проекта С++?

    @aselockd Автор вопроса
    @echo off
    
    git clone https://github.com/curl/curl
    git clone https://github.com/madler/zlib
    git clone https://github.com/google/brotli
    git clone https://github.com/facebook/zstd
    
    cd zlib/
    cmake CMakeLists.txt
    msbuild zlib.sln /p:Configuration=Release
    cd ..
    
    cd brotli/
    cmake CMakeLists.txt
    msbuild brotli.sln /p:Configuration=Release
    cd ..
    
    cd zstd/build/cmake/
    cmake CMakeLists.txt
    msbuild zstd.sln /p:Configuration=Release
    cd ..
    cd ..
    cd ..
    
    git clone https://github.com/nghttp2/nghttp2
    cd nghttp2/
    cmake CmaMeLists.txt
    msbuild nghttp2.sln /p:Configuration=Release
    cd ..
    
    set текущийКаталог=%CD%
    cd curl/
    cmake CMakeLists.txt -DCURL_USE_LIBPSL=OFF -DZLIB_INCLUDE_DIR="../zlib"^
     -DZLIB_LIBRARY="%текущийКаталог%\zlib\Release\z.lib"^
     -DBROTLI_INCLUDE_DIR="../brotli/c/include/"^
     -DBROTLIDEC_LIBRARY="../brotli/Release/brotlidec.lib"^
     -DBROTLICOMMON_LIBRARY="../brotli/Release/brotlicommon.lib"^
     -DZSTD_INCLUDE_DIR="../zstd/lib"^
     -DZSTD_LIBRARY="../zstd/build/cmake/lib/Release/zstd_static.lib"^
     -DNGHTTP2_INCLUDE_DIR="../nghttp2/lib/includes/"^
     -DNGHTTP2_LIBRARY="../nghttp2/lib/Release/nghttp2.lib"
    msbuild CURL.sln /p:Configuration=Release
    Ответ написан
  • Как установить размер текстового поля по его содержимому?

    @aselockd Автор вопроса
    Нашел решение

    def добавитьСообщениеВЧатПользователя(self, id : str, сообщение : str, alignment):
            контент = self.пользователиМеню.получитьКонтентПанель(id)
    
            if not hasattr(контент, "прокручиваемыйКонтент"):
                горизонталь = QVBoxLayout()
                контент.прокручиваемыйКонтент = ПрокручиваемыйВертикальноКонтент(контент)
                горизонталь.addWidget(контент.прокручиваемыйКонтент)
                контент.прокручиваемыйКонтент.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
                контент.setLayout(горизонталь)
    
                w, horizontal = QWidget(), QHBoxLayout()
                w.setLayout(horizontal)
                textInput = QPlainTextEdit()
                textInput.setFixedHeight(80)
                horizontal.addWidget(textInput)
                btnSend = QPushButton("Отправить")
                horizontal.addWidget(btnSend)
                горизонталь.addWidget(w, alignment=Qt.AlignBottom)
    
                def btnClick(_):
                    self.добавитьСообщениеВЧатПользователя(id, textInput.toPlainText(), Qt.AlignRight)
    
                btnSend.clicked.connect(btnClick)
    
                def keyPressEvent(event):
                    print(event, event.nativeModifiers(), Qt.KeyboardModifier.ShiftModifier)
    
                    if event.key() == Qt.Key_Return:
                        if event.nativeModifiers() == 528:
                            QPlainTextEdit.keyPressEvent(textInput, event)
                        else:
                            return btnClick(None)
                    else:
                        QPlainTextEdit.keyPressEvent(textInput, event)
                textInput.keyPressEvent = keyPressEvent
            
            if сообщение is not None and len(сообщение) > 0:
                виджет = QWidget()
                виджет.setGeometry(100,0,200, 50)
                виджет.move(контент.width() - 200, 0)
                виджет.setFixedHeight(50)
                виджет.setFixedWidth(300)
                виджет.setStyleSheet("""background-color: rgba(0,0,0,155)""")
    
                текст = QTextEdit(виджет)
                текст.setText(сообщение)
                текст.setGeometry(0,0,300,50)
                текст.setReadOnly(True)
                
                def timeout(*args, **kwargs): 
                    скроллер = текст.verticalScrollBar()
                    текст.setFixedHeight(текст.height() + (скроллер.maximum() - скроллер.value()))
                    виджет.setFixedHeight(текст.height())
                    
                    таймер = QTimer(виджет)
                    def update(*args, **kwargs):
                        контент.прокручиваемыйКонтент.scrollToTheEnd()
                        таймер.stop()
                    таймер.timeout.connect(update)
                    таймер.start(100)
                
                текст.verticalScrollBar().rangeChanged.connect(timeout)
    
                контент.прокручиваемыйКонтент.addWidget(виджет, alignment=alignment )
                контент.прокручиваемыйКонтент.scrollToTheEnd()
    Ответ написан
    Комментировать
  • Как можно найти последовательность методов, которые были применены к Java объекту?

    @aselockd
    Тебе нужны средства самоанализа в языке программирования, с помощью которых можно будет просто проитерировать все методы класса обьекта и получить какую либо другую информацию. Если я правильно понял.
    Ответ написан
    Комментировать