c++ - 从 QT 复选框到 Postgresql 的星期选择

标签 c++ string qt connection-string

我的 Qt 应用程序 GUI 中有一组复选框代表一周中的几天,我选择一天或多天,然后根据选中的复选框,将查询字符串传递给 PostgreSQL 以显示这些日期的某些数据天-例如如果我检查星期一和星期三,extract (dow from timestamp) = 1 或 extract(dow from timestamp) = 3 应该添加到我的查询中。我刚刚输入了一个粗略的解决方案——虽然在我写这篇文章时还没有测试过——但我想知道是否有我在这里遗漏的更短和更优雅的方法。代码如下: - queryAdditionCalltimePartqueryAdditionCallStampPart 字符串稍后添加到我的主查询的相关部分 QString 之前执行-

bool checkboxArray[7];
bool mult = false;
checkboxArray[0] = this->ui->checkBoxMonday->isChecked();
checkboxArray[1] = this->ui->checkBoxTuesday->isChecked();
checkboxArray[2] = this->ui->checkBoxWednesday->isChecked();
checkboxArray[3] = this->ui->checkBoxThursday->isChecked();
checkboxArray[4] = this->ui->checkBoxFriday->isChecked();
checkboxArray[5] = this->ui->checkBoxSaturday->isChecked();
checkboxArray[6] = this->ui->checkBoxSunday->isChecked();
QString queryAdditionCalltimePart = "";
QString queryAdditionCalStampPart = "";
int count = 0;

queryAdditionCalltimePart.append("(");
queryAdditionCalStampPart.append("(");
for(int i = 0; i < 7; i++)
{
    if(checkboxArray[i] == true)
    {
        count++;
    }
}


int x = 0;

for(int i = 0; i < 7; i++)
{
    if(checkboxArray[i] == true)
    {
        queryAdditionCalltimePart.append("(SELECT EXTRACT(DOW FROM calltime) = '" +QString::number(i+1)+"')");
        queryAdditionCalStampPart.append("(SELECT EXTRACT(DOW FROM cal.stamp) = '" +QString::number(i+1)+"')");

    }

        if(count > 1 && checkboxArray[i] == true)
    {
        if(x == count - 1)
        {
        }
        else
        {
            queryAdditionCalltimePart.append("OR");
            queryAdditionCalStampPart.append("OR"); 
            x++;
        }
    }
}


queryAdditionCalltimePart.append(")");
queryAdditionCalStampPart.append(")");

最佳答案

您可以向 Qt 中的任何小部件添加属性,http://qt-project.org/doc/qt-4.8/qobject.html#setProperty .该属性可以包含您想要的任何信息。

在您的特定情况下,将 SQL 字符串附加为每个复选框的属性会更清晰。

this->ui->checkBoxMonday->setProperty("sql", 
        "(SELECT EXTRACT(DOW FROM calltime) = '" +QString::number(i+1)+"') OR ";

收到用户输入后,只需附加复选框属性并删除最后的 OR。

关于c++ - 从 QT 复选框到 Postgresql 的星期选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12632667/

相关文章:

qt - QListWidget 向下滚动列表后拖动

c# - 如何从图像中访问检测到的人脸中的人脸像素?

c - 使用sscanf从c中的字符串中提取

c++ - 声明包含模板的结构的链接列表

python - 我无法使用 python 删除该字符串中的\xa0 ?

c++ - 为什么将字符串分配给 const char * 然后将 const char * 作为缓冲区 (void*) 传递给函数时结果不正确?

c++ - 使用 Qt 和 C++ 时没有插槽,但出现 QMetaObject::connectSlotsByName 错误

c++ - 链接 Live555 库 - Qt

c++ - 什么情况会导致对 C++ 代码的原始变量的天真搜索失败?

c++ - 从标准 C++ 代码访问 iPhone 的沙箱文档文件夹