Maybe you could use a colon (:) as placeholder for a missing value?
Q(b, m, n) = (b=b, m=m, n=n)
Q(b::Int, m::Int, ::Colon) = Q(b, m, b-m-1);
Q(b::Int, ::Colon, n::Int) = Q(b, b-n-1, n);
julia> Q(8, 0, :)
(b = 8, m = 0, n = 7)
julia> Q(8, :, 7)
(b = 8, m = 0, n = 7)
Such a syntax is consistent with what is done for example in reshape when one does not want to specify all arguments.