scantool设备配置对话框实现互斥功能

This commit is contained in:
luoliangyi 2024-04-29 17:29:39 +08:00
parent 1b2940efd8
commit 815e90a133
3 changed files with 994 additions and 545 deletions

File diff suppressed because it is too large Load Diff

View File

@ -30,18 +30,33 @@ struct DeviceConfigEx
{
DeviceConfigEx()
{
label = nullptr;
ctrl = nullptr;
ctrlWidget = nullptr;
id = -1;
name.clear();
title.clear();
valueType = 0;
stringValue.clear();
intValue = 0;
doubleValue = 0;
boolValue = false;
rangeType = 0;
stringValueList.clear();
intValueList.clear();
doubleValueList.clear();
intValueMin = 0;
intValueMax = 0;
doubleValueMin = 0;
doubleValueMax = 0;
}
// 控件
QWidget *label;
QWidget *ctrl;
QWidget *ctrlWidget;
// 配置名
int id;
std::string name;
@ -82,22 +97,29 @@ public:
std::vector<DeviceConfig> GetDeviceConfigs();
private:
virtual bool eventFilter(QObject *target, QEvent *event) override;
void Init(const std::vector<DeviceConfig>& deviceConfigs);
void Update(int ignoreId);
void Init();
void Update(const std::vector<DeviceConfig>& deviceConfigs);
void UpdateControls();
protected:
virtual bool eventFilter(QObject *target, QEvent *event) override;
private slots:
void on_defaultBtn_clicked();
void on_sliderClicked(int value);
void on_string_list_comboBoxClicked();
void on_int_list_comboBoxClicked();
void on_double_list_comboBoxClicked();
void on_int_sliderClicked(int value);
void on_double_sliderClicked(int value);
void on_relate_spinBoxClicked(int value);
void on_relate_doubleSpinboxClicked(double value);
void on_string_comboBoxClicked();
void on_spinBoxClicked(int value);
void on_doubleSpinboxClicked(double value);
void on_checkedClicked();
private:
SANE_Handle m_devHandle;
std::vector<DeviceConfigsGroup> m_baseDeviceConfigsGroups;
std::vector<DeviceConfig> m_defDeviceConfigs; // 默认配置值
std::vector<DeviceConfigsGroup> m_deviceConfigsGroups; // 当前配置信息
};
#endif // FORM_DEVICECONFIG_H

View File

@ -231,7 +231,6 @@ void MainWindow::StartScan(unsigned int buttonId)
}
// 1.恢复默认
SANE_Int num_dev_options = 0;
sane_control_option(m_devHandle, 0, SANE_ACTION_GET_VALUE, &num_dev_options, NULL);
for (int i = 1; i < num_dev_options; ++i)
@ -252,7 +251,6 @@ void MainWindow::StartScan(unsigned int buttonId)
}
// 2.设置新的属性
for (int i = 0; i < (int)scanParam.deviceConfigs.size(); ++i)
{
for (int j = 1; j < num_dev_options; ++j)
@ -293,7 +291,6 @@ void MainWindow::StartScan(unsigned int buttonId)
}
// 3. 获取DPI
for (int i = 1; i < num_dev_options; ++i)
{
const SANE_Option_Descriptor* desp = sane_get_option_descriptor(m_devHandle, i);