std::wstring
для username
. А вместо экранирования можно либо использовать сырые строки LR"(path\to\file)"
, либо просто писать прямой слэш, а не обратныйL"path/to/file"
. И как правильно уже заметили, используй STL Filesystem. Домашний каталог лучше брать из переменной окружения (environment variable). std::set<fs::path>
и заполнить его содержимым, а затем воспользоваться реверсивным итератором std::set
.std::set<fs::path> file_paths;
for (const auto& dir_entry : fs::directory_iterator{"path/to/directory"})
file_paths.insert(dir_entry.path());
auto iter = file_paths.rbegin();
auto end = file_paths.rend();
Для решения этих проблем придумали std::initializer_list — "магический класс", который представляет собой очень легкую обертку для массива элементов известного размера, а так же умеет конструироваться от braced-init-list-а. Почему же он "магический"? Как раз по описанным выше причинам его невозможно эффективно сконструировать в пользовательском коде, поэтому компилятор создает его специальным образом.
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/path_to_include_dir)
target_link_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/path_to_link_dir)
target_link_libraries(${PROJECT_NAME} PUBLIC libname)
#include <QtWidgets>
#include "widget.h"
int main(int argc, char *argv[])
{
QApplication ThisApp(argc,argv);
Widget ConverterWeights;
ConverterWeights.show();
return ThisApp.exec();
}
#ifndef WIDGET_H
#define WIDGET_H
#include <QtWidgets>
class Widget : public QWidget
{
Q_OBJECT
public:
QLabel *Title;
QLineEdit *Input;
QLineEdit *Output;
QComboBox *UnitWI;
QComboBox *UnitWO;
QPushButton *Button;
public:
Widget() : QWidget()
{
Title = new QLabel(this);
Input = new QLineEdit(this);
Output = new QLineEdit(this);
UnitWI = new QComboBox(this);
UnitWO = new QComboBox(this);
Button = new QPushButton(this);
ConfigBase();
ConfigTitle();
ConfigInput();
ConfigOutput();
ConfigUnitWI();
ConfigUnitWO();
ConfigButton();
QObject::connect(Button,SIGNAL(clicked(bool)),this,SLOT(PushButton()));
}
~Widget() {}
private:
void ConfigBase();
void ConfigTitle();
void ConfigInput();
void ConfigOutput();
void ConfigUnitWI();
void ConfigUnitWO();
void ConfigButton();
public slots:
void PushButton()
{
/*code*/
}
};
#endif
QLabel Title;
QLineEdit Input;
QLineEdit Output;
QComboBox UnitWI;
QComboBox UnitWO;
QPushButton Button;