Using QSqlQuery::bindValue() for variable number of placeholders
I'm not the expert for QSqlQuery, so my answer might be slightly off the mark. I see nothing wrong in not using prepare() and bindValue(). It also seems to me a bit "odd" to use these in a DELETE statement. As I said, I'm not the expert on this, there may be other guys that can shed some light on this aspect.

I see two cosmetic issues: 


the way you use checked_items_ids, first time with null argument, second time iterating. A QStringList can help in constructing the SQL statement.
setting the SQL statement in the constructor. Setting it in the exec() function might be more "natural".


These are cosmetic issues only. They do, however, improve readability of your code.

QStringList querylist;
for(auto id : checked_items_ids)
    querylist &lt;&lt; QString("id = %1").arg(id);
QString querystring = QString("DELETE FROM members WHERE ") +
                  querylist.join(" OR ");

QSqlQuery query;
query.exec(querystring);