Russian Qt Forum
Июля 01, 2025, 04:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
   Начало   Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
Страниц: 1 [2] 3 4 ... 10
 11 
 : Ноября 12, 2024, 09:54 
Автор DarkHobbit - Последний ответ от ssoft
Можно задать ограничение на диапазон дат в 1 год

Код
C++ (Qt)
calendar->setDateRange(min, max);
 

и
Цитировать
можно не заморачиваться и при отсутствии года вызвать
если так пользователю удобнее будет.

 12 
 : Ноября 11, 2024, 22:40 
Автор DarkHobbit - Последний ответ от DarkHobbit
Добрый день.
Я сейчас добавляю в свой проект поддержку редактирования дней рождения, у которых есть только месяц и день, но поддержку дат с годом тоже надо сохранить.
Взял стандартный QDateTimeEdit.
Код
C
QDateTimeEdit *editor;
...
editor->setDisplayFormat("dd.MM");
При этом, как и ожидал, показываются только секции дня и месяца. Если же пользователь явно указывает, что год есть, я вызываю
Код
C
editor->setDisplayFormat("dd.MM.yyyy");
И восстанавливаю полный вид. Казалось бы всё хорошо...
Но если нажать на кнопочку календаря, календарь всё равно вылезает с годом, и его можно редактировать, что будет сбивать людей с толку. Указание, что года нет, должно быть явным. Собственно, это нужно для редактирования контактов формата vCard, где подобные даты сохраняются в виде
Код:
BDAY:--0412

P.S. Пока описывал проблему, подумал, что для дат без года этот календарь вообще смысла не имеет. И что можно не заморачиваться и при отсутствии года вызвать
Код
C
setCalendarPopup(false)
И вся недолга. Месяц и день оставшийся виджет редактировать позволяет, ограничения на значения устанавливает грамотно...

Как считаете, нормальное решение?

 13 
 : Ноября 03, 2024, 23:37 
Автор tumanovaleх - Последний ответ от qate
слово "шлее" слышал ранее ?

 14 
 : Ноября 01, 2024, 22:49 
Автор tumanovaleх - Последний ответ от tumanovaleх
Здравствуйте!
Начинаю осваивать QT (Windows, Msys2). Чтобы это делать на конкретном примере, решил перевести на QT свой проект на C# по работе с АЦП. Начал с создания контролов на форме. Возникли следующие вопросы:
1. При запуске программы при изменении размера формы с помощью правого нижнего угла размер можно сделать гораздо меньше используемого мной tabWidget. Как сделать так, чтобы размеры формы можно было изменить только так, чтобы они не были меньше пространства, занимаемого на форме контролами?
2. Как у groupBox сделать более толстыми ограничивающие его линии? А то по умолчанию они очень тонкие и их плохо видно.
3. Я выбрал для формы formLayout. Может опытные пользователи подкажут, какие лайоуты лучше выбирать для формы с многими контролами?
Проект прикрепил.

 15 
 : Октября 25, 2024, 23:24 
Автор demaker - Последний ответ от kambala
Да в студии используется стандартный компилятор(msvc toolset), а в Qt MinGW32bit
господи, какая же у тебя каша в голове... Нет никакого «стандартного компилятора», есть вполне конкретная версия msvc toolset, ее можно увидеть через установщик студии.
Т.е получается, что библа используемая в проекте должна быть собрана тем же компилятором что и сам проект иначе никак.
Я правильно понимаю?  Может можно как-то настроить?
да, правильно. Не понял что ты хочешь настроить.

 16 
 : Октября 25, 2024, 22:08 
Автор KSergeyP - Последний ответ от KSergeyP
Вот еще при сборке  MinGW64:
    WARNING: Basic cpp/winrt support missing. Some features might not be available.

Что хочет? Вот на гитхабе этот winrt: https://github.com/microsoft/cppwinrt
Как его в сборку запихнуть?
Или компилятор должен быть собран с его поддержкой? - https://packages.msys2.org/base/mingw-w64-cppwinrt

 17 
 : Октября 25, 2024, 15:21 
Автор demaker - Последний ответ от ssoft
Извините что сразу не уточнил Смеющийся

Да в студии используется стандартный компилятор(msvc toolset), а в Qt MinGW32bit

Т.е получается, что библа используемая в проекте должна быть собрана тем же компилятором что и сам проект иначе никак.
Я правильно понимаю?  Может можно как-то настроить?

В C++ нет стандарта по экспорту методов при сборке библиотек, поэтому библиотеки совместимы только тогда, когда собраны одним и тем же компилятором.

Такой стандарт есть в C, но тогда в C++ коде глобальные методы (для других нельзя) нужно задекларировать как

Код
C++ (Qt)
// MyCFuncs.h
#ifdef __cplusplus
extern "C" {  // only need to export C interface if
             // used by C++ source code
#endif
 
__declspec( dllimport ) void MyCFunc();
__declspec( dllimport ) void AnotherCFunc();
 
#ifdef __cplusplus
}
#endif
 

Далее небольшой геморрой с подготовкой файлов для другого компилятора

Инструментами из состава MinGW для библиотеки требуется выполнить

  • Запустить gendef example.dll(сгенерирует example.def)
  • Запустить dlltool -D example.dll -d example.def -l libexample.a(сгенерирует libexample.a)
  • Использовать libexample.a вместе с example.dll для линковки с проектом на MinGW

И главное не напутать с битностью библиотеки, так как инструменты не выдают никаких ошибок).

Такой подход следует использовать только тогда, когда нет исходных файлов example и он поставляется исключительно в виде готовой библиотеки, в противном случае это просто садомазохизм.

 18 
 : Октября 25, 2024, 09:48 
Автор demaker - Последний ответ от demaker
Цитировать
правда это на другой машине и там нету VS
ну если там используется не тот же компилятор (msvc toolset), которым ты собрал библиотеку, то чему ты удивляешься. Видимо, мы должны сами угадать какой у тебя компилятор используется на другой машине.

Извините что сразу не уточнил Смеющийся

Да в студии используется стандартный компилятор(msvc toolset), а в Qt MinGW32bit

Т.е получается, что библа используемая в проекте должна быть собрана тем же компилятором что и сам проект иначе никак.
Я правильно понимаю?  Может можно как-то настроить?

 19 
 : Октября 24, 2024, 23:41 
Автор demaker - Последний ответ от kambala
Цитировать
правда это на другой машине и там нету VS
ну если там используется не тот же компилятор (msvc toolset), которым ты собрал библиотеку, то чему ты удивляешься. Видимо, мы должны сами угадать какой у тебя компилятор используется на другой машине.

 20 
 : Октября 24, 2024, 22:31 
Автор demaker - Последний ответ от demaker
Доброго времени суток!

Имеется библиотека созданная в VS2022

Типа:

example.h

Код:
#pragma once

#ifdef EXAMPLE_EXPORTS
#define EXAMPLE_API __declspec(dllexport)
#else
#define EXAMPLE_API __declspec(dllimport)
#endif

EXAMPLE_API void Get_Example();

example.cpp

Код:

#include "pch.h"
#include "example.h"
#include <iostream>


void Get_Example()
{
     std::cout << "hello example\n";
}



Если я подключаю данную библиотеку к проекту на VS то все хорошо и работает.

Если же к проекту на Qt (правда это на другой машине и там нету VS) то не работает выдается ошибка
Код:
undefined reference to  -Z..Get_Example..


В pro-файле указываю путь к .h и .lib - файлам
Код:
INCLUDEPATH += "C:\path"
LIBS += "C:\path\name.lib"



Но если в хедере библиотеки сделать

Код:

...

extern "C"{
     EXAMPLE_API void Get_Example();
}


пересобрать и подключить к Qt проекту то все норм.

Пытался сделать в .pro файле Qt проекта добавить дефайн

Код:
DEFINES += EXAMPLE_EXPORTS

Но безуспешно(

Кто-нибудь сталкивался с такой проблемой? Подскажите в чем может быть причина?


Страниц: 1 [2] 3 4 ... 10

Страница сгенерирована за 3.521 секунд. Запросов: 20.